Trouver un fichier de code source :
   

Version Française - English Version
Accueil > 

Assembleur

 > 

SHOOT 1.00

 > 

shoot.Asm


SHOOT 1.00

shoot.Asm


Informations sur ce code source

Cliquez pour voir la capture en taille normale
Code Source SHOOT 1.00
Auteur parki
Fichier shoot.Asm en Assembleur
Publié le 29/04/2012
Mis à jour le 10/05/2012

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


Liste des fichiers du ZIP

FichierTaille
data/araignee.dat3,96 Ko
data/variables globales.txt3,84 Ko
images/bal.bmp48,05 Ko
images/balleSpider.bmp822 o
images/barre de vie.bmp822 o
images/den.bmp246 o
images/five.bmp3,05 Ko
images/four.bmp3,05 Ko
images/gun.bmp48,05 Ko
images/height.bmp3,05 Ko
images/met.bmp3,05 Ko
images/murArr.bmp48,05 Ko
images/nine.bmp3,05 Ko
images/num.bmp246 o
images/one.bmp3,05 Ko
images/seven.bmp3,05 Ko
images/six.bmp3,05 Ko
images/sol.bmp12,05 Ko
images/spi.bmp12,05 Ko
images/three.bmp3,05 Ko
images/two.bmp3,05 Ko
images/zero.bmp3,05 Ko
objet3d_class.inc8,35 Ko
objet3d_methodes.inc38,54 Ko
shoot.Asm12,02 Ko
shoot.Inc1,88 Ko
shoot.Rc916 o
sons/ara.wav347,37 Ko
sons/fer.wav190,05 Ko
sons/gun.wav78,66 Ko
sons/joueur_touche.wav2,42 Ko
sons/tirSpider.wav6,75 Ko
WGL_class.inc6,8 Ko
WGL_methode.inc12,78 Ko

Pour télécharger le zip au complet, veuillez vous rendre sur cette page :
Télécharger SHOOT 1.00


Sources du même auteur ayant un ZIP


  • Assembleur Pile 32 bits/64 bits
    Deux petits exemples de code pour montrer aux débutants (dont je fais parti) le principe de la pile en asm 32 bits et en asm 64 bits. ...
    Langage : Assembleur, publié le 27/02/2013 par parki

  • Assembleur Utiliser visual c++ comme ide pour masm
    le but est de pouvoir se servir du debogueur de visual C++ express 2008 pour les programme masm. Le plus simple est de créer une règle d...
    Langage : Assembleur, publié le 17/01/2013 par parki

  • Assembleur Collision open gl
    utilisation du mode de rendu GL_SELECT OPENGL pour rechercher une collision entre deux objets. Permet de déterminer sans aucun calcul une c...
    Langage : Assembleur, publié le 09/11/2012 par parki

  • Assembleur Lecture de cpuid
    utilisation de l'instruction CPUID pour connaitre les caractéristiques du processeurs (constructeur,extensions supportées,...)
    Langage : Assembleur, publié le 28/10/2012 par parki

  • Assembleur Views opengl
    Views est un simple exemple de multiples vues en open Gl (grâce à différents cadrages avec glViewport)
    Langage : Assembleur, publié le 02/10/2012 par parki

Voir la suite...


Sources du même langage comportant un zip


Voir la suite...





Logiciels à télécharger...

  • Easy-Planning (4.5.0.11)
    Easy-Planning (4.5.0.11)
    Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté aux petites et moyennes entreprises(PME). Easy-Planning permet la création de plannings prévisionnels, p...
  • CVEasy (3.1.0.51)
    CVEasy (3.1.0.51)
    PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante. PHMSD-CVEasy vous assistera pour la rédaction de votre CV, le CV de vos amis ou de membres de votre famille, m...
  • LettresFaciles 2011 (8.6.0.31)
    LettresFaciles 2011 (8.6.0.31)
    LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types. Son interface simple d'utilisation mais suffisamment complète vous permettra de créer une multitude de lettres....

Sondage...

Le top des photos

Photo ??Photo ???????????????
Photo ????????Photo ????????
 

Développement réalisé par Nicolas SOREL (Nix) et Emmanuel (EBArtSoft) avec l'aide de Cyril DURAND, 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
Temps d'éxécution de la page : 0,63 sec