begin process at 2012 05 24 04:00:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > SOLITAIRE EN MASM32 POUR WINDOWS

SOLITAIRE EN MASM32 POUR WINDOWS


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Classé sous :solitaire, jeux, masm32 Niveau :Initié Date de création :22/12/2005 Date de mise à jour :22/12/2005 21:57:05 Vu / téléchargé :9 041 / 451

Auteur : BLUEBIBUBBLE

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Et Voilà ! Pile poil pour Noel !
Un programme de jeux sous windows tout en MASM32 !
Le solitaire, vous connaissez ? Une planchette de bois avec 33 trous et 32 cailloux...
Le programme ne verifie pas si le joueur gagne ou perd, de toute façon le joueur, lui, le sait bien ;)


Source

  • ;===================================
  • ;SOLITAIRE.EXE (c) 2005 RPH-CONCEPT
  • ;===================================
  • ;
  • ;info@rph-concept.com
  • ;
  • ;Les fichiers sont disponible aux addresses suivante:
  • ;
  • ; http://www.rph-concept.com/download/solitaire_exe.zip ;*** Fichiers Executables
  • ; http://www.rph-concept.com/download/solitaire_src.zip ;*** Source du fichier EXE
  • ; http://www.rph-concept.com/download/solitaire_dll.zip ;*** Source du fichier DLL
  • ;
  • ;----------------------------------------------------------------------------------------------------------------------------
  • ;
  • ;LE BUT DU JEUX
  • ;--------------
  • ;
  • ;Je ne crois pas utile de rappeler les règles du Solitaire,
  • ;la seule règle à retenir étant qu'un pion peut sauter par-dessus un pion voisin
  • ;horizontalement ou verticalement (pas en diagonal) Le pion sauté étant alors à enlever.
  • ;
  • ;Le but ou le challenge principal du Solitaire est d'atteindre l'inverse de la position de départ
  • ;
  • ;On débute avec un plateau remplit sauf le pion du milieu
  • ;et le but est alors d'atteindre le plateau opposé ou inverse:
  • ;c'est à dire un plateau vide sauf le pion du milieu qui doit rester seul.
  • ;
  • ;
  • ;----------------------------------------------------------------------------------------------------------------------------
  • ;
  • ;SOLITAIRE.DLL C'est le sac a bitmap de l'application, elle contient les 3 Bitmaps (Format BMP 24 Bits par pixel) utilisés:
  • ; Les bitmaps sont stockés sans header, dernière ligne en premier, comme dans le fichier BMP.
  • ; Le code de la DLL ressemble a ça:
  • ;
  • ; .data
  • ;BM1 DB B,G,R,B,G,R,B,G,R,... 1024x768 pixels (1 x 1024x768) Fond d'écran
  • ; DB B,G,R,B,G,R,B,G,R,...
  • ; DB B,G,R,B,G,R,B,G,R,...
  • ; ...
  • ;BM2 DB B,G,R,B,G,R,B,G,R,... 208x552 pixels (2 x 3 x 208x92) Sprites de Menu
  • ; DB B,G,R,B,G,R,B,G,R,...
  • ; DB B,G,R,B,G,R,B,G,R,...
  • ; ...
  • ;BM3 DB B,G,R,B,G,R,B,G,R,... 64x6144 pixels (32 x 3 x 64x64) Sprites de jeux
  • ; DB B,G,R,B,G,R,B,G,R,...
  • ; DB B,G,R,B,G,R,B,G,R,...
  • ;
  • ; .code
  • ;GetPtrBckGrnd PROC
  • ; lea eax,BM1 ;--- Retourne un pointeur sur le fond d'écran
  • ; ret
  • ;GetPtrBckGrnd ENDP
  • ;
  • ;GetPtrSwitches PROC
  • ; lea eax,BM2 ;--- Retourne un pointeur sur les Sprites de Menu
  • ; ret
  • ;GetPtrSwitches ENDP
  • ;
  • ;GetPtrBalls PROC
  • ; lea eax,BM3 ;--- Retourne un pointeur sur les Sprites de Jeux
  • ; ret
  • ;GetPtrBalls ENDP
  • ;
  • ;
  • ;
  • ;----------------------------------------------------------------------------------------------------------------------------
  • ;
  • ;SOLITAIRE.EXE C'est le programme généré par la compilation de solitaire.asm.
  • ;
  • ; L'application vas créer une fenêtre et 2 threads, ce qui nous donne 3 routines
  • ; fonctionnent en parallèle:
  • ;
  • ; - WndProc
  • ; - MoniThread
  • ; - FireThread
  • ;
  • ;
  • ; WndProc intercèpte les messages WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_LBUTTONUP
  • ; pour gérer le menu et les Pions. L'évennement WM_LBUTTONDOWN peut
  • ; provoquer l'appel de Pion_Click qui gère le jeux.
  • ;
  • ; MoniThread sert de timer, tout les 40/1000èmes de secondes le flag
  • ; fcount est mis a 1.
  • ;
  • ; FireThread est la routine principale chargée de redessiner l'écran.
  • ; On alloue tout d'abord un Buffer pour le bitmap de sortie 768x3x768
  • ; On stocke l'adresse dans bitmap1
  • ; On initialise ensuite les pointeur de sprite:
  • ; hBackGround, hSwitchReset, hSwitchQuitt
  • ; On appelle ResetGame pour finir l'initialisation.
  • ;
  • ; Ensuite on raffraichit l'écran en boucle 25 fois par seconde:
  • ; ShowPict est appeler lors-ce-que fcount passe a 1.
  • ; ShowPict remet a zero fcount.
  • ;
  • ; Ok, a quoi bon raffraichir l'écran 25 fois par seconde pour un solitaire ?
  • ; Surement a rien, mais pour d'autre type de jeux... ca peut faire une base ;)
  • ;
  • ; Les donnée du jeux sont stockées dans SpriteData sous la forme d'un tableau
  • ; 7 x 7 de structure SPRITEINFO:
  • ;
  • ; X1, Y1, X2, Y2 Position du sprite a l'écran, sert aussi lors de la détection souris
  • ; Enable 0 si la case ne fait pas partie du jeux, exclut les 16 cases des coins.
  • ; Selected 0=Normal / 1=Mouse Over / 2=Selectionné
  • ; hSprite OFFSET Sprite / 0=Case Vide
  • ; OfsDest Adresse d'offset dans le buffer video
  • ; col,Row Coordonnées dans le jeux de -3 à +3
  • ; La case (0, 0) etant au centre.
  • ;
  • ; Autre procédures importantes:
  • ;
  • ; ResetGame Copie les variables du jeux de SpritesData vers GameData
  • ; et initialize les pointeurs des pions sur les sprites
  • ; ShowPict Appelée 25 fois par seconde, c'est elle qui redessine le
  • ; BM en mémoire et l'envoie a windows avec SetDIBitsToDevice
  • ; Pion_Click Déplace les pions si les Opérations demandées sont valide
  • ;
  • ;----------------------------------------------------------------------------------------------------------------------------
;===================================
;SOLITAIRE.EXE	(c) 2005 RPH-CONCEPT
;===================================
;
;info@rph-concept.com
;
;Les fichiers sont disponible aux addresses suivante:
;
;	http://www.rph-concept.com/download/solitaire_exe.zip	;*** Fichiers Executables
;	http://www.rph-concept.com/download/solitaire_src.zip	;*** Source du fichier EXE
;	http://www.rph-concept.com/download/solitaire_dll.zip	;*** Source du fichier DLL
;
;----------------------------------------------------------------------------------------------------------------------------
;
;LE BUT DU JEUX
;--------------
;
;Je ne crois pas utile de rappeler les règles du Solitaire,
;la seule règle à retenir étant qu'un pion peut sauter par-dessus un pion voisin
;horizontalement ou verticalement (pas en diagonal) Le pion sauté étant alors à enlever.
; 
;Le but ou le challenge principal du Solitaire est d'atteindre l'inverse de la position de départ
;
;On débute avec un plateau remplit sauf le pion du milieu
;et le but est alors d'atteindre le plateau opposé ou inverse:
;c'est à dire un plateau vide sauf le pion du milieu qui doit rester seul. 
;
;
;----------------------------------------------------------------------------------------------------------------------------
;
;SOLITAIRE.DLL	C'est le sac a bitmap de l'application, elle contient les 3 Bitmaps (Format BMP 24 Bits par pixel) utilisés:
;		Les bitmaps sont stockés sans header, dernière ligne en premier, comme dans le fichier BMP.
;		Le code de la DLL ressemble a ça:
;
;		.data
;BM1		DB   B,G,R,B,G,R,B,G,R,...	 1024x768 pixels (1 x 1024x768)		Fond d'écran
;		DB   B,G,R,B,G,R,B,G,R,...	
;		DB   B,G,R,B,G,R,B,G,R,...
;		...
;BM2		DB   B,G,R,B,G,R,B,G,R,...	 208x552 pixels (2 x 3 x 208x92)	Sprites de Menu	
;		DB   B,G,R,B,G,R,B,G,R,...
;		DB   B,G,R,B,G,R,B,G,R,...
;		...
;BM3		DB   B,G,R,B,G,R,B,G,R,...	 64x6144 pixels (32 x 3 x 64x64)	Sprites de jeux
;		DB   B,G,R,B,G,R,B,G,R,...
;		DB   B,G,R,B,G,R,B,G,R,...
;
;		.code
;GetPtrBckGrnd	PROC
;		lea	eax,BM1			;--- Retourne un pointeur sur le fond d'écran
;		ret
;GetPtrBckGrnd	ENDP
;
;GetPtrSwitches PROC
;		lea	eax,BM2			;--- Retourne un pointeur sur les Sprites de Menu
;		ret
;GetPtrSwitches ENDP
;
;GetPtrBalls	PROC
;		lea	eax,BM3			;--- Retourne un pointeur sur les Sprites de Jeux
;		ret
;GetPtrBalls	ENDP
;
;
;
;----------------------------------------------------------------------------------------------------------------------------
;
;SOLITAIRE.EXE	C'est le programme généré par la compilation de solitaire.asm.
;		
;		L'application vas créer une fenêtre et 2 threads, ce qui nous donne 3 routines
;		fonctionnent en parallèle:
;
;		- WndProc
;		- MoniThread
;		- FireThread
;
;		
;		WndProc 	intercèpte les messages WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_LBUTTONUP
;				pour gérer le menu et les Pions. L'évennement WM_LBUTTONDOWN peut 
;				provoquer l'appel de Pion_Click qui gère le jeux.
;
;		MoniThread 	sert de timer, tout les 40/1000èmes de secondes le flag
;				fcount est mis a 1.
;
;		FireThread 	est la routine principale chargée de redessiner l'écran.
;				On alloue tout d'abord un Buffer pour le bitmap de sortie 768x3x768
;				On stocke l'adresse dans bitmap1
;				On initialise ensuite les pointeur de sprite:
;				hBackGround, hSwitchReset, hSwitchQuitt
;				On appelle ResetGame pour finir l'initialisation.
;
;				Ensuite on raffraichit l'écran en boucle 25 fois par seconde:
;				ShowPict est appeler lors-ce-que fcount passe a 1.
;				ShowPict remet a zero fcount.
;
;		Ok, a quoi bon raffraichir l'écran 25 fois par seconde pour un solitaire ?
;		Surement a rien, mais pour d'autre type de jeux... ca peut faire une base ;)
;
;		Les donnée du jeux sont stockées dans SpriteData sous la forme d'un tableau
;		7 x 7 de structure SPRITEINFO:
;
;		X1, Y1, X2, Y2	Position du sprite a l'écran, sert aussi lors de la détection souris
;		Enable		0 si la case ne fait pas partie du jeux, exclut les 16 cases des coins.
;		Selected	0=Normal / 1=Mouse Over / 2=Selectionné
;		hSprite		OFFSET Sprite / 0=Case Vide 
;		OfsDest		Adresse d'offset dans le buffer video
;		col,Row		Coordonnées dans le jeux de -3 à +3
;				La case (0, 0) etant au centre.
;
;		Autre procédures importantes:
;
;		ResetGame	Copie les variables du jeux de SpritesData vers GameData
;				et initialize les pointeurs des pions sur les sprites
;		ShowPict	Appelée 25 fois par seconde, c'est elle qui redessine le
;				BM en mémoire et l'envoie a windows avec SetDIBitsToDevice
;		Pion_Click	Déplace les pions si les Opérations demandées sont valide
;
;----------------------------------------------------------------------------------------------------------------------------

 Conclusion

Pour les mises a jours, faites un tour sur www.rph-concept.com

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

22 décembre 2005 21:29:57 :
Ajout du source (solitaire.asm) sur le site, sans passez par le fichier zip
22 décembre 2005 21:52:57 :
sans comm...
22 décembre 2005 21:54:42 :
no comments...
22 décembre 2005 21:57:05 :
no comments...

 Sources du même auteur

Source avec Zip Source avec une capture DUMPER HEXADÉCIMAL
Source avec Zip Source avec une capture LE FEUX A LA FENÊTRE...
Source avec Zip CONVERSION BITMAP 1, 4, 8, 24 ET 32 BITS
Source avec Zip SIMPLE TRANSFER DE FICHIERS UTILISANT FTP
Source avec Zip Source avec une capture MIDI SOUND TESTER

 Sources de la même categorie

Source avec Zip JEU DE CASSE-BRIQUE EN EMU 8086 par abdelmalek12
Source avec Zip TEXTURE AVEC DIRECTX9 par quoi
Source avec Zip Source avec une capture AUTOMATE CELLULAIRE EN ASSEMBLEUR ( JEU DE LA VIE ) par ratala
Source avec Zip Source avec une capture MES MODIFICATIONS SUR LE JEU DE SNAKE DE ASMGGES par ChaperonNoir
Source avec Zip LE JEU DES 24 BOÎTES DE L'HOMME MYSTÉRIEUX [MASM] par grandvizir

 Sources en rapport avec celle ci

Source avec Zip ECRIRE DANS BDR, DEMO MINIMALE (WIN32) par BruNews
Source avec Zip Source avec une capture RESOLUTION DE SUDOKU par noel70
Source avec Zip OBTENIR LA VERSION DU SYSTEME,SON ENVIRONNEMENT,LE SERVICE P... par ToutEnMasm
Source avec Zip CONNECTIONS INTERNET HTTP.. DIAL-UP CONNECTIONS par ToutEnMasm
Source avec Zip ALLOCATION DYNAMIQUE DE MEMOIRE POUR LA PILE DANS MASM par ToutEnMasm

Commentaires et avis

Commentaire de patatalo le 23/12/2005 23:07:04 administrateur CS

salut,

ouais !!!, de l'asm ...

@++

Commentaire de quoi le 26/12/2005 14:42:26

super un beau jeux qui fonctionne en asm
le code est assez complexe
ça rappel du DIRECT DRAW le fait que
la fenêtre est toute redessinée tout les
lapses de temps définis
très interressant
c'est bien du niveau 2 voir 3 !
10/10




Commentaire de patatalo le 02/01/2006 08:54:00 administrateur CS

salut,

superbe cette source.
Juste un truc qui me chifonne sur l'utilisation et la synchronisation de MoniThread.

Ne pourrait-on pas gerer un timer qui nous permettrait de savoir si l'appel de ShowPic depasse le delai de 40ms ? Car actuellement, MoniThread ne sert a rien dans le cas d'un depassement de ce delai.

plutot que d'utiliser un thread suplementaire pour la gestion d'un timer, utiliser le compteur cpu pour connaittre exactement le temps de gestion de l'appel a ShowPic et la valeur sleep associée si necessaire ?

@++

Commentaire de BLUEBIBUBBLE le 02/01/2006 18:13:41

Hello PATALO,

Je pense que l’on est loin de dépasser ces 40ms, sur un PC presque récent en tout cas, et dans le pire des cas, si on affiche une image sur deux, il nous reste 12,5 FPS, ça devrait rester jouable...
De plus l’exactitude du timing ne me parait pas critique dans notre cas, mais effectivement, si l'utilisation d'un thread te semble inutile, plein d’autres moyens, comme le compteur hardware, sont effectivement possibles...

A+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

aide pour faire jeux 3d [ par ghyslain ] nous somme en train de faire un jeu 3d de dragon ball z sur pc.sa ne peux que etre une bonne experience.pour nous aider nous avons besoin de:_programm Image jpg en Masm32 [ par phoenix1969asm ] Tout d'abord Merci pour l'aide que vous allez m'apporterje debute est je dois dire que je nage un peu ...je souhaiterai afficher une image Jpg de mani MASM32 et les types enumération. [ par frobinet ] Bonjour,comment peut on traduire la séquence suivante qui provient du C en language assembleur MASM32 :enum enum_field_types { FIELD_TYPE_DECIMAL, FIE masm32, include [ par coockiesch ] Hello!!!Plein de bonne volonté, j'ai dl un tuto pour ASM Win32... Voici mon code:.386.MODEL FLAT, STDCALLOPTION CASEMAP : NONEINCLUDE \masm32\in Problème sur les thèmes XP [MASM32] [ par frobinet ] Bonjour,je recherche des infos pour appliquer les thèmes XP en assembleur pour les boutons...J'ai vu qu'il faut utiliser les fonctions OpenThemeData,D [MASM32] Comment utiliser RECORD ? [ par frobinet ] Bonjour,J'essaie de faire un programme simple en RS232 pour piloterun modem et je bloque sur la structure du DCB qui comportele RECORD 'fbits' qui est La gestion de la pile dans masm32 [ par ToutEnMasm ] Par défaut la pile d'un programme masm32 est fixé a 4096 octets soit une page.je sais comment modifier cette taille au link mais je ne sais pas commen Scolling Text masm32 [ par Bros ] HelloJ'aimerais bien faire un scrolling text de bas en haut en masm32 (un peu comme dans le about de emule)Quelqu'un aurait-il une idée de comment pro segment partagé en masm32 [ par anthraxx ] bonjour a tous,je connais l'assembleur mais je suis pas tres habitué a masm32, et je me demandais ce qu'il faut mettre pour qu'un segment donné de ma MASM32 et Performances ???? [ par gor00 ] Salut à tous, Je me posé une question à propos des programmes en assembleur réalisés à l'aide de MASM32. Cet outil propose plusieurs fonctions et libr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,666 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales