Accueil > > > shoot.Asm
SHOOT 1.00
shoot.Asm
Informations sur ce code source
C'est une première ébauche d'un prog open gl 1.1 du type tir dans le tas
il y a encore beaucoup à faire..
Le prog gère les déplacements,les collisions,le son (minimaliste)
Les ressources prenant de la place,je poste en 3 fois
shoot 1.0 prog con
Fichier : shoot.Asm
Nombre de lignes : 480 lignes
Afficher ce fichier en plein écran
- .586
- .model flat,stdcall
- option casemap:none
-
- INCLUDELIB user32.lib
- INCLUDELIB kernel32.lib
- INCLUDELIB gdi32.lib
- INCLUDELIB opengl32.lib
- INCLUDELIB glu32.lib
- INCLUDELIB winmm.lib
-
- ;-------- definition des classes----
- include WGL_class.inc
- include objet3d_class.inc
-
- INCLUDE shoot.inc
-
-
- .data
-
- ;buffer texte
- bufferFPS_valeur BYTE 2 DUP(30h),0 ;2 caracteres+0 terminal
- bufferFPS_texte BYTE "FPS=",0
- bufferSCORE_valeur BYTE 6 dup(30h),0
- bufferSCORE_texte byte "SCORE=",0
- gameOver BYTE "G A M E O V E R",0
-
-
- poubelle real4 ?
- ;-----------------------------------------------
- nomClasse BYTE "WGL",0
- FGL WGL <>
- ;-----------------------------------------------
- spider1 objet3d <>
- balleSpider1 objet3d <>
- gun objet3d <>
- porte1 objet3d <>
- murFacadedroit objet3d <>
- murFacadegauche objet3d <>
- murFond objet3d <>
- murLateralDroit objet3d <>
- murLateralGauche objet3d <>
- sol objet3d <>
- ciel objet3d <>
- nuages objet3d <>
- horizon objet3d <>
- camera objet3d <>
- essai objet3d <>
- balleGun objet3d <>
- murLimiteMondeDroit objet3d <>
- murLimiteMondeGauche objet3d <>
- murLimiteMondeAnt objet3d <>
- murLimiteMondeArr objet3d <>
- score objet3d <>
-
- ;variables globales
- ;-----------------
- include data/variables globales.txt
- zdepart real4 60.0f
- IDbmp_balle equ 525
- IDbmp_balleSpider equ 535
- IDbmp_chiffre equ 528
- IDbmp_barreDeVie equ 536
-
- IDbarreDeVie dword ?
- bufferGDI dword ?
- WINRect RECT <>
- TypeRes byte "TexBMP",0
- ID1 dword ?
- ID2 dword ?
- ;barre de vie
- Pvie dword 1.0,0.0,-0.1,0.0,0.0
- dword 1.0,1.0,-0.1,0.02,0.0
- dword 0.0,1.0,0.1,0.02,0.0
- dword 0.0,0.0,0.1,0.0,0.0
- PvieIndex BYTE 0,1,2,3
-
-
- ;quads essai
- Pdessin dword 4.0,0.0,22.0,0.0,65.0
- dword 4.0,1.0,22.0,1.0,65.0
- dword 0.0,1.0,20.0,1.0,65.0
- dword 0.0,0.0,20.0,0.0,65.0
-
- Pindex BYTE 0,1,2,3
- ;sol
- PpointSol dword 0.0,0.0,10.0,0.0,100.0 ;IG
- dword 600.0,0.0,110.0,0.0,100.0 ;ID
- dword 600.0,600.0,110.0,0.0,50.0 ;SD
- dword 0.0,600.0,10.0,0.0,50.0 ;SG
- PfaceSol byte 0,1,2,3
-
- ;barriere du monde
- PpointBarriereDroite dword 0.0,0.0,110.0,0.0,100.0 ;ant inf
- dword 0.0,1.0,110.0,1.0,100.0 ;ant sup
- dword 100.0,1.0,110.0,1.0,50.0 ;post sup
- dword 100.0,0.0,110.0,0.0,50.0 ;post inf
- PfaceBarriereDroite byte 0,1,2,3
- IDbmp_limiteMonde equ 532
- PpointBarriereGauche dword 0.0,0.0,10.0,0.0,100.0 ;ant inf
- dword 0.0,1.0,10.0,1.0,100.0 ;ant sup
- dword 100.0,1.0,10.0,1.0,50.0 ;post sup
- dword 100.0,0.0,10.0,0.0,50.0 ;post inf
- PfaceBarriereGauche byte 0,1,2,3
- IDbmp_mur1_limit equ 533
-
-
- PpointBarriereArr dword 0.0,0.0,10.0,0.0,50.0 ;inf gauche
- dword 200.0,0.0,110.0,0.0,50.0 ;inf droit
- dword 200.0,1.0,110.0,1.0,50.0 ;sup droit
- dword 0.0,1.0,10.0,1.0,50.0 ;sup gauche
- PfaceBarriereArr byte 0,1,2,3
- IDbmp_murArr_limit equ 534
-
- PpointBarriereAnt dword 0.0,0.0,10.0,0.0,100.0 ;inf gauche
- dword 0.0,1.0,10.0,1.0,100.0 ;sup gauche
- dword 200.0,1.0,110.0,1.0,100.0 ;sup droit
- dword 200.0,0.0,110.0,0.0,100.0 ;inf droit
- PfaceBarriereAnt byte 0,1,2,3
-
-
- ;gun
- longCylindre QWORD 1.0f
- raySommet QWORD 0.01f
- rayBase QWORD 0.01f
- ray QWORD 5.0f
- para DWORD 10
- meri DWORD 10
- quad dword ?
-
-
- .code
- debut:
- invoke GetModuleHandle,0
- invoke Maitre,eax
- invoke ExitProcess,0
-
- Maitre proc Hdl_GetModuleHandle:dword
-
- ;initialisation classes objet3d
-
- invoke constructeur_objet3d
-
- ;chargement des ressources WAV
- push 511
- call porte1.chargeWavRes_objet3d
- mov porte1.PointeurDonneeWav,eax
- mov porte1.IDdataWavRes1,ecx
- push 512
- call spider1.chargeWavRes_objet3d
- mov spider1.PointeurDonneeWav,eax
- mov spider1.IDdataWavRes1,ecx
- push 513
- call gun.chargeWavRes_objet3d
- mov gun.PointeurDonneeWav,eax
- mov gun.IDdataWavRes1,ecx
- push 514
- call spider1.chargeWavRes_objet3d
- mov spider1.PointeurDonneeWav,eax
- mov spider1.IDdataWavRes2,ecx
-
- Pcall camera.chargeWavRes_objet3d,515
- mov camera.PointeurDonneeWav,eax
- mov camera.IDdataWavRes1,ecx
-
- ;initialisation
-
- ;position initiale camera/joueur
- mov eax,P0V5
- mov camera.ypos,eax
- mov eax,P40
- mov camera.xpos,eax
- mov eax,zdepart
- mov camera.zpos,eax
-
- ;score
- mov score.stepScore,0010
- mov score.FPS,0
-
- ;vie
- mov eax,P1
- mov score.PointDeVie,eax
- mov score.morte,0
-
- ;position du quads test pour collision
-
- mov eax,P67
- mov essai.limiteANT,eax
- mov eax,P64
- mov essai.limitePOST,eax
- mov eax,P23
- mov essai.limiteDROITE,eax
- mov eax,P19
- mov essai.limiteGAUCHE,eax
- mov eax,P1
- mov essai.limiteHAUTE,eax
- mov eax,P0
- mov essai.limiteBASSE,eax
-
- mov eax,delai_panpan_spider
- mov spider1.delaiTir,eax
-
- mov spider1.touche,0
- mov spider1.compteur_desintegration,0
-
-
- mov eax,Z_initiale_araignee
- mov spider1.zpos,eax
- mov eax,X_initiale_araignee
- mov spider1.xpos,eax
-
- ;initialisation et activation classe WGL
- invoke constructeurWGL,Hdl_GetModuleHandle,600,420,10,50,0
-
- ret
- Maitre endp
-
- AffichScene proc uses eax ebx ecx edx edi esi
-
-
-
- ;nettoyage des buffers
- invoke glClear,GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT
-
- ;mise à jour des FPS
- inc score.FPS
-
- ;affichage du texte "FPS=" ------------------------
- invoke TextOut,FGL.Hdl_GetDc,10,1,ADDR bufferFPS_texte,sizeof bufferFPS_texte-1
- cmp flagFPS,1
- jne @f ;on n'est pas à une seconde
- mov eax,score.FPS
- push 1
- push offset bufferFPS_valeur
- call DecAscii
- invoke TextOut,FGL.Hdl_GetDc,42,1,ADDR bufferFPS_valeur,sizeof bufferFPS_valeur-1
- mov score.FPS,0
- mov flagFPS,0
- @@:
- ;score
- invoke TextOut,FGL.Hdl_GetDc,10,20,ADDR bufferSCORE_texte,sizeof bufferSCORE_texte-1
- mov eax,score.stepScore
- push 5
- push offset bufferSCORE_valeur
- call DecAscii
- invoke TextOut,FGL.Hdl_GetDc,63,20,ADDR bufferSCORE_valeur,sizeof bufferSCORE_valeur-1
-
-
- ;---------------------------------
- ; limite du monde dépassée ?
- ;---------------------------------
-
- Pcall camera.LimiteMonde_objet3d,camera.xpos,camera.ypos,camera.zpos,\
- xGauchelimiteMonde,xDroitlimiteMonde,\
- zAntlimiteMonde,zPostlimitMonde
- cmp eax,1
- je suite
-
-
- ;----------------------------------------------------
- ; collision joueur/objets ? (decor interieur)
- ;----------------------------------------------------
-
- Pcall camera.testCollision_objet3d,camera.xpos,camera.ypos,camera.zpos,\
- essai.limiteANT,essai.limitePOST,\
- essai.limiteDROITE,essai.limiteGAUCHE,\
- essai.limiteHAUTE,essai.limiteBASSE
- cmp eax,1
- jz suite
-
- ;pas de collision
- ;----------------
-
- ;calcul des new coordonnées en fonction des touches (param direction à zero)
-
- Pcall camera.deplacement_objet3d,camera.xpos,camera.ypos,camera.zpos,\
- camera.yrot,camera.hautBas,camera.z,\
- camera.yeux,0,vitesse_joueur
- ;recuperation des données
- RecupValeur_deplacement_objet3d camera.xpos,camera.ypos,camera.zpos,\
- camera.yrot,camera.hautBas,camera.z,\
- camera.Flag_mvt_lat_gauche,camera.Flag_mvt_lat_droit,\
- camera.Flag_mvt_avt,camera.Flag_mvt_arr,\
- camera.yeux
- ;affichage de la camera
- invoke glLoadIdentity
- Pcall camera.positionScene_objet3d,camera.xpos,camera.ypos,camera.zpos,\
- camera.yrot,camera.hautBas
-
- jmp fintestbloquage
-
- ;collision
- ;---------
-
- suite:
-
- cmp camera.Flag_mvt_arr,0
- je @f
- ;on est bloque en reculant=on fait un pas en avancant
- Pcall camera.deplacement_objet3d,camera.xpos,camera.ypos,camera.zpos,\
- camera.yrot,camera.hautBas,camera.z,\
- camera.yeux,OBJ3D_AVANCE,vitesse_joueur
- ;recuperation des données
- RecupValeur_deplacement_objet3d camera.xpos,camera.ypos,camera.zpos,\
- camera.yrot,camera.hautBas,camera.z,\
- camera.Flag_mvt_lat_gauche,camera.Flag_mvt_lat_droit,\
- camera.Flag_mvt_avt,camera.Flag_mvt_arr,\
- camera.yeux
- jmp fintestbloquage
- @@:
- ;on est bloque en avancant=on recule d'un pas
- Pcall camera.deplacement_objet3d,camera.xpos,camera.ypos,camera.zpos,\
- camera.yrot,camera.hautBas,camera.z,\
- camera.yeux,OBJ3D_RECULE,vitesse_joueur
- RecupValeur_deplacement_objet3d camera.xpos,camera.ypos,camera.zpos,\
- camera.yrot,camera.hautBas,camera.z,\
- camera.Flag_mvt_lat_gauche,camera.Flag_mvt_lat_droit,\
- camera.Flag_mvt_avt,camera.Flag_mvt_arr,\
- camera.yeux
- fintestbloquage:
-
-
- ;-----------------------
- ; canon de l'arme et niveau de vie
- ;-----------------------
-
- invoke glPushMatrix
-
- invoke glTranslatef,camera.xpos,camera.ypos,camera.zpos ; 1 position de la camera=joueur
-
- ; niveau de vie
-
- ;mort ?
- fld P0
- fld score.PointDeVie
- fcomp st(1) ;cmp score.PointDeVie,0.0
- fnstsw ax
- shr ah,1
- fstp poubelle
- jc mort ;score.PointDeVie < 0.0
-
- invoke glPushMatrix
-
- invoke glRotatef,camera.yrot,P0,P1,P0 ;2 score suit mvts droite/gauche camera
- invoke glRotatef,gun.hautBas,P1,P0,P0 ;3 idem pour haut/bas
- invoke glTranslatef,M0V2,M0V4,M1
- ;invoke glTranslatef,M0V1,M0V1,M1 ;on l'avance un peu
- invoke glScalef,score.PointDeVie,P1,P1 ;taille barre de vie ne fonction des points de vie
- ;couleur de la barre en fonction des points de vie restants
- fld P0V7
- fld score.PointDeVie
- fcomp st(1) ;cmp score.PointDeVie,0.7
- fnstsw ax
- shr ah,1
- fstp poubelle
- jnc jaune ;score.PointDeVie > 0.7 = jaune
- ;
- fld P0V4
- fld score.PointDeVie
- fcomp st(1) ;cmp score.PointDeVie,0.4
- fnstsw ax
- shr ah,1
- fstp poubelle
- jnc orange ;score.PointDeVie > 0.4 = orange
- ;rouge (cmp score.PointDeVie<=0.4)
- invoke glColor3f,P1,P0,P0
- jmp @f
- jaune:
- invoke glColor3f,P1,P1,P0
- jmp @f
- orange:
- invoke glColor3f,P1,P0V5,P0
-
- @@:
- invoke glCallList,11
- invoke glColor3f,P1,P1,P1
-
- invoke glPopMatrix
-
- ; canon
-
- invoke glPushMatrix
-
- invoke glRotatef,camera.yrot,P0,P1,P0 ;2 flingue suit mvts droite/gauche camera
- fld camera.hautBas
- fchs
- fstp gun.hautBas
- invoke glRotatef,gun.hautBas,P1,P0,P0 ;3 idem pour haut/bas
- invoke glTranslatef,P0,Yflingue,Zflingue ;4 position du flingue das les mains du joueur
- Pcall gun.creeTextureRes_objet3d,IDbmp_flingue,32
- invoke glCallList,2
-
- invoke glPopMatrix
-
- invoke glPopMatrix
-
- ;-----------------------
- ; balle fusil
- ;-----------------------
-
- invoke glPushMatrix
- Pcall balleGun.projectile1_objet3d
- invoke glPopMatrix
-
- ;-----------------------------------------
- ; quads test collision
- ;-----------------------------------------
-
- ;objet détruit ?
- cmp essai.touche,1
- je @f
- invoke glPushMatrix
- invoke glCallList,1
- invoke glPopMatrix
- @@:
-
- ;-------------------------------
- ; sol
- ;-------------------------------
- invoke glPushMatrix
- invoke glCallList,4
- invoke glPopMatrix
-
-
- ;--------------------------
- ; limite du monde
- ;--------------------------
- invoke glPushMatrix
- invoke glCallList,5
- invoke glCallList,6
- invoke glCallList,7
- invoke glCallList,8
- invoke glPopMatrix
-
-
- ;--------------------------
- ; spider1
- ;-------------------------
-
- Pcall spider1.Attrape_objet3d,spider1.xpos,spider1.ypos,spider1.zpos,\
- spider1.ROTy,spider1.flagTirAvt,camera.xpos,camera.ypos,camera.zpos
-
- mov spider1.ROTy,eax
- mov spider1.xpos,ebx
-
- Pcall spider1.affichageConditionnel_objet3d
-
- invoke glPushMatrix
- invoke glTranslatef,spider1.xpos,spider1.ypos,spider1.zpos
- invoke glRotatef,spider1.ROTy,P0,P1,P0 ;rot autour axe y ,droite gauche
- invoke glCallList,9
- invoke glPopMatrix
-
- ;-----------------------
- ; tir de l'araignée
- ;----------------------
-
- invoke glPushMatrix
- Pcall balleSpider1.projectile2_objet3d
- invoke glPopMatrix
-
-
- finaff:
-
- ret
-
- mort:
- mov score.morte,1
- invoke SendMessage,FGL.Hdl_CreateWindowEx,Tmort,0,0
-
-
- ret
- AffichScene endp
-
- ;----------definition des méthodes de classe
- include WGL_methode.inc
- include objet3d_methodes.inc
-
- end debut
|