Accueil > > > SOLITAIRE EN MASM32 POUR WINDOWS
SOLITAIRE EN MASM32 POUR WINDOWS
Information sur la source
Description
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
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
DUMPER HEXADÉCIMALDUMPER HEXADÉCIMALExplorateur 'old style' de fichiers avec affichage en Hexadécimal (dump). La partie explorer est dans un lib....
LE FEUX A LA FENÊTRE...LE FEUX A LA FENÊTRE...Et oui, encore l'algo du feux !
Déja présenté sur ce site en 16Bits 256 couleurs, le voilà en 32 Bits 'True Color'.
Quelques modifs ont étés apporté...
CONVERSION BITMAP 1, 4, 8, 24 ET 32 BITSCONVERSION BITMAP 1, 4, 8, 24 ET 32 BITS Le format BMP officiel est prévu pour les profondeurs de couleurs de 1, 4, 8 ou 24 Bits
Rien sur le 32 bits...
Les bitmaps 32 bits sont pourtant...
SIMPLE TRANSFER DE FICHIERS UTILISANT FTPSIMPLE TRANSFER DE FICHIERS UTILISANT FTP Ce code s'adresse au webmasters et webmistress qui veulent récupérer les fichiers
de type '.log' afin d'établir des statistiques, corriger les erreur...
MIDI SOUND TESTERMIDI SOUND TESTERL'idée de ce p'tit programme est de pouvoir tester les Instruments et les notes MIDI disponibles. Choisissez un instrument a gauche et jouer les notes...
Sources de la même categorie
Commentaires et avis
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
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
974 Application Server (12.2.4.0)974 APPLICATION SERVER (12.2.4.0)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP mySongBook Player (1.0.0)MYSONGBOOK PLAYER (1.0.0)mySongBook Player est un logiciel gratuit permettant l'accès à une archive de tablatures/partitio... Cliquez pour télécharger mySongBook Player
|