[Code]Début de Jeu de plateforme commenté
5 participants
Page 1 sur 1
[Code]Début de Jeu de plateforme commenté
Coucou à tous.
Je vous propose aujourd'hui le début d'un jeu de plateforme, ce qui veut dire qu'il n'est pas complet.
Des commentaires ont été placé afin que vous puissez comprendre ce qu'il se passe dans toutes ces lignes de codes.
Au programme dans ce code (mode EDIT) :
26 octobre 2014:
_Un exemple de SAVE avec PACKAGE$
_La structure d'un jeu
_Déplacer un sprite de gauche à droite avec animation
_Faires des sauts (gravité)
_La collision en utilisant l'ID du background (décor)
_Le scrolling horizontal (celui où on ne peut pas revenir en arrière)
01 novembre 2014:
_Animation de frappe
_Sprite d'attente
_Animation de GameOver
_Refonte du code corrigeant des bugs d'animation
06 novembre 2014:
_Ennemi animé en mouvement
_Mort par toucher avec l'ennemi
_Objets à toucher
_Frappe qui tue l'ennemi
_Inventaire
_But final
J'espère que ça vous sera utile et que vous allez progresser dans la programmation avec Petit Computer.
Cliquez ici pour les QR codes du 26 Octobre 2014
Version du 01 Novembre 2014:
Version du 06 Novembre 2014:
Je vous propose aujourd'hui le début d'un jeu de plateforme, ce qui veut dire qu'il n'est pas complet.
Des commentaires ont été placé afin que vous puissez comprendre ce qu'il se passe dans toutes ces lignes de codes.
Au programme dans ce code (mode EDIT) :
26 octobre 2014:
_Un exemple de SAVE avec PACKAGE$
_La structure d'un jeu
_Déplacer un sprite de gauche à droite avec animation
_Faires des sauts (gravité)
_La collision en utilisant l'ID du background (décor)
_Le scrolling horizontal (celui où on ne peut pas revenir en arrière)
01 novembre 2014:
_Animation de frappe
_Sprite d'attente
_Animation de GameOver
_Refonte du code corrigeant des bugs d'animation
06 novembre 2014:
_Ennemi animé en mouvement
_Mort par toucher avec l'ennemi
_Objets à toucher
_Frappe qui tue l'ennemi
_Inventaire
_But final
J'espère que ça vous sera utile et que vous allez progresser dans la programmation avec Petit Computer.
Cliquez ici pour les QR codes du 26 Octobre 2014
Version du 01 Novembre 2014:
Version du 06 Novembre 2014:
- Tout le programme en texte du 06Nov2014, ne pas recopier il manque le Package$. C'est pour que je puisse voir le code sans rallumer ma console:
- 'J8BPGAME en essai
'ACLS: Efface COL1 du package donc ラ タviter
@RESET
CLS:BGCLR :SPCLR :GCLS :CLEAR
SYSBEEP=0 'enlチve le son systチme
PNLTYPE "OFF"
'On prタpare les groupes de
'variables au dタbut du programme
'un endroit oレ on ne risque
'pas d'y revenir pendant le jeu.
DIM DECOR(24)
'Variables de l'ID des colisions
SOL(0)=32:SOL(1)=139:SOL(2)=140:SOL(3)=171:SOL(4)=172
'Chargement des fichiers personalisタs
'LOAD"BGF0:TXT_FR",FALSE 'b12
'LOAD"COL1:NCCOL",FALSE 'b14
'LOAD"SPU1:NCRITIC",FALSE 'b01
'LOAD"SPU2:NC_DVD",FALSE 'b02
'LOAD"SPU0:NC_TIR",FALSE 'b00
'Ici j'ai paquetタ les ressources
'avec le programme. On regarde
'd'abord les bits des diffタrentes
'ressources, le max est le bit14
'qui est COL1, donc on devra
'convertir les 16 premiers bits
'(car 16 est divisible par 4)
'en hexadタcimal, ce qui donne:
'0101 0000 0000 0111 = 5 0 0 7
'On fait ?HEX$(&B0101) en mode RUN.
'Ici le Package$ sera "5007"
'SAVE"J8BPGAME","5007"
'Ici on fait le menu principal
@MENU
'On affiche d'abord la partie
'graphismes du menu.
'C'est ラ dire images et textes.
LOCATE 7,4:?"J8B PLATEFORME GAME"
LOCATE 6,6:?"Commentタ en mode EDIT"
COLOR 13:LOCATE 10,8:?"APPUIE SUR А"
COLOR 7:LOCATE 1,10:?"Б:Saut/н:Vitesse/Пタplacement":?"А:Frappe/Х:Inventaire"
'Pistolet
COLOR 0
LOCATE 1,13:?"Au programme :"
LOCATE 1,14:?"_Du scrolling horizontal"
LOCATE 1,15:?"_De l'animation et dタplacement"
LOCATE 1,16:?"_Du saut et des coups de poing"
LOCATE 1,17:?"_De la collision et des objets"
LOCATE 1,18:?"_Un ennemi, Game Over et Fin"
LOCATE 1,19:?"_Indique la structure d'un jeu"
LOCATE 1,20:?"_Montre un exemple de Package$"
COLOR 8:LOCATE 15,22:?"Version 06Nov2014":COLOR 0
'Puis un sous-menu pour タviter
'de redessiner la partie graphisme
'qui ferait ralentir le programme.
@MENU1
'On code ici la partie intタraction
'du menu. C'est ラ dire ce qui
'se passe lorsqu'on touche
'l'タcran ou qu'on appuie sur
'un bouton.
'Lorsqu'on appuie sur А, on efface
'le menu (ici c'est du juste
'du texte) et on lance la suite
IF BTRIG()==16 THEN CLS:WAIT 10:GOTO @NIVEAU1
'On terminera toujours cette
'partie par:
GOTO @MENU1
'Ici le dタbut du jeu, on
'commence par le niveau 1,
'mais on aurait pu mettre
'aussi une intro dタbutant
'l'histoire du jeu.
@NIVEAU1
'On affiche le joueur
SPSET 0,114,2,0,0,0,16,32:SPCOL 0,-8,0,16,32,1
'SPREAD(0),XN,YN Coordonnタes du moment, utilisタ plus tard.
'Joueur: Coordonタes, point d'affichage
'boケte de collision, dタpart,
'taille.
X=100 :Y=100 :SPHOME 0,8,0
SPCOL 0,-6,0,12,32,1
SPOFS 0,X,Y,0
SPSCALE 0,100,0
SPD=1:FRQ=10 'Rapiditタ et Frタquence d'animation
OLD=64 'Retient le sprite utilisタ
SENS=1 'Dタtermine le sens de la direction
YV=0:GR=0.3:U=1 'Vタlocitタ Verticale/Gravitタ/Update
'On prタpare les variables de l'ennemi
ESENS=-1
'On affiche l'inventaire
GOSUB @INVENTAIRE
'On affiche le dタcor de dタpart
GPAINT 0,0,246:BGOFS 0,0,0:BGOFS 1,0,0
BGFILL 1,1,16,30,16,32,8,0,0
BGFILL 1,1,17,30,23,165,8,0,0
BGFILL 1,18,13,25,13,32,8,0,0
BGFILL 1,18,14,25,15,165,8,0,0
BGFILL 1,10,10,15,10,32,8,0,0
BGFILL 1,10,11,15,15,165,8,0,0
BGFILL 1,12,9,12,9,140,8,0,0
BGFILL 1,12,10,12,10,172,8,0,0
BGFILL 1,11,9,11,9,139,8,0,0
BGFILL 1,11,10,11,10,171,8,0,0
'Ceci est pour dire qu'on lira
'les donnタes du label depuis
'le dタbut.
RESTORE @DECOR1
'BGREAD(0,XN/8,YN/,BGID,BGPAL,BGHR,BGVR Donnタes du dタcor, utilisタ plus tard.
'Mouvement et animation
'dans une partie intタraction
'C'est le cerveau du jeu, oレ
'toutes les actions sont faites.
'Il tournera donc en boucle.
@BOUGE
'En gタnタral :
'_B est le bouton tenu, sert pour la modification de coordonnタes
'_BR est le bouton appuyタ, sert pour lancer une animation et changer de sprite
B=BUTTON():BR=BTRIG()
'--->>Quand on touche pas droite ou gauche, on
'affiche le sprite d'attente
'suivant le sens de regard
IF B%32==0 OR B<3 THEN IF SENS>0 THEN SPCHR 0,114:OLD=114 ELSE IF SENS==-1 THEN SPCHR 0,118:OLD=118
'--->Direction droite et gauche
'vers animation
'Les variables B suivis d'un
'numタro indiquent si un bouton
'est enfoncタ.
IF BR AND 4 THEN B4=1:SENS=-1:GOSUB @MARCHE
IF BR AND 8 THEN B8=1:SENS=1:GOSUB @MARCHE
IF (BUTTON(3) AND 4) OR (BUTTON(3) AND THEN B4=0:B8=0
'--->Vitesse de dタplacement quand on appuie sur le bouton
'retour ラ la normale quand on le relリche
IF BR AND 512 THEN SPD=2
IF BUTTON(3) AND 512 THEN SPD=1
'--->>Donnタes temps rタel du joueur
'et du dタcor, XBG se rajoute
'pour le scrolling horizontal
SPREAD(0),XN,YN:BXN=FLOOR(XN/8+XBG/:BYN=FLOOR(YN/+4
BGREAD(1,BXN,BYN),BGID,BGP,BGHR,BGVR
'--->Dタtermine la variable Y du sol
FOR I=0 TO 4
IF BGID==SOL(I) THEN BGYS=(BYN-4)*8+4
'--->>Si en l'air alors arrツt de
'l'animation et position saut
'sinon position normale sauf si on frappe
IF Y<BGYS AND B16<1 THEN SPANIM 0,4,FRQ:IF SENS==1 THEN SPCHR 0,80 ELSE SPCHR 0,84 ELSE SPCHR 0,OLD
'pas d'animation si droite/gauche inactifs
IF Y<BGYS AND B16<1 AND B4<1 AND B8<1 THEN SPANIM 0,1,FRQ
'--->Saut modif Vタlocitタ verticale YV
'IF BR AND 32 THEN IF Y==100 THEN YV=YV-8*SQR(GR)
'On peut sauter seulement si
'on touche le sol. BG=1 permet
'de dタcoller du sol.
IF BR AND 32 THEN B32=1:IF BGID==SOL(I) THEN YV=YV-8*SQR(GR):BG=1
NEXT
'--->Animation de frappe
IF BR AND 16 THEN S16=S:B16=1:SPANIM 0,4,FRQ,1:GOSUB @FRAPPE
'--->Arrツt d'anim si le bouton
'est multiple de 32 et si Haut-Bas
'donc droite-gauche et А sont exclues
IF B%32==0 OR B<3 THEN SPANIM 0,1,FRQ
'--->Vers modification de X pour se dタplacer
IF (B AND 4) THEN GOSUB @AVANCE
IF (B AND THEN GOSUB @AVANCE
'--->Remet l'animation lorsqu'on lリche А la frappe
IF BUTTON(3) AND 16 THEN B16=0:GOSUB @MARCHE
IF B16==1 AND SPCHK(0)==0 THEN IF SENS==1 THEN OLD=114 ELSE OLD=118
'--->>Renvoie vers le dタplacement
'et les lois de la physique du jeu
IF !(MAINCNTL%U) THEN GOSUB @PHYS
'--->Le bouton Б saut est relachタ
IF BUTTON(3) AND 32 THEN B32=0
'vタrifie si des ennemis apparaient
GOSUB @ENNEMI
'vタrifie si un ennemi nous touche
GOSUB @ETOUCHE
'vタrifie apparition objets
GOSUB @OBJETS
'--->Va au menu de l'inventaire
'se met aprチs tous les mouvements et surtout pas entre
IF BR AND 128 THEN B128=1:GOSUB @ITEM
'vタrifie si fin du niveau
IF BUT==1 THEN IF SPHITSP(0,99) THEN GOTO @TERMINUS
'--->>Sert pour le dタbuggage
'? "Bouton:";B;" BXN:";BXN;" BYN:";BYN;" BGID:";BGID," XN:";XN;" YN:";YN;" BGYS:";BGYS;" X-Y:";X,Y
'?"BX2:";BX2;" BGID2:";BGID2;" BGIDT:";BGIDT;" BGIDB:";BGIDB;" SENS:";SENS
'?"B4:";B4;" B8:";B8;" B16:";B16;" B32:";B32;" SPD:";SPD;" XBG:";XBG;" XBGA:";XBGA
'?"XE:";XE;" YE:";YE;" BXE:";BXE;" BYE:";BYE;" ESENS:";ESENS;" BEID:";BEID;" BGCHK:";BGCHK(1)
'?"OLD:";OLD;" SPCHK(0):";SPCHK(0)
VSYNC 1 'pour bien afficher chaque frame du sprite
'--->Condition de GameOver et animation puis reboot du jeu.
IF YN>192 THEN GOTO @GAMEOVER
'CLS 'effacement du texte du dタbuggage
GOTO @BOUGE
@GAMEOVER
LOCATE 11,7:?"GAME OVER"
SPCHR 0,120:SPANIM 0,4,FRQ
SPOFS 0,XN,-32,200:WAIT 200
GOTO @RESET
'Direction droite et gauche
'et animation si on ne frappe pas
@MARCHE
'Si on frappe on ne marche pas
IF B16==1 THEN RETURN
'Si on appuie droite ou gauche,
'on anime la marche.
IF B4==1 THEN SPCHR 0,72:SPANIM 0,4,FRQ:OLD=72
IF B8==1 THEN SPCHR 0,64:SPANIM 0,4,FRQ:OLD=64
RETURN
'Modifie X si on ne frappe pas
@AVANCE
'Si on frappe on n'avance pas
IF B16==1 THEN RETURN
'Si on appuie droite ou gauche,
'on change X
'Une condition est placタ avec
'XN pour タviter de sortir d'une
'zone de l'タcran. ナ une extrタmitタ,
'on renvoie vers le scrolling.
IF (B AND 4) THEN IF XN>8 THEN X=X+(SENS*SPD)
IF (B AND THEN IF XN<120 THEN X=X+(SENS*SPD) ELSE GOSUB @SCROL
RETURN
@FRAPPE
'on change de sprite suivant le sens.
IF SENS==1 THEN SPCHR 0,96:OLD=96 ELSE SPCHR 0,104:OLD=104
RETURN
'Pour le saut, gravitタ,...
'Modifie Y
@PHYS
YV=YV+GR
Y=Y+YV
''IF Y>100 THEN YV=0:Y=100
'Permet de modifier Y si on
'est au sol, -4 ラ cause
'de SPHOME
'Sur le sol +4 pour ツtre au
'milieu de l'herbe (Je sais ルa complique les choses)
'La condition avec le relリchement
'du bouton permet de faire des
'mini-saut.
FOR I=0 TO 4
IF (BGID==SOL(I) AND BG==0) OR (BUTTON(3)==32 AND YN>Y) THEN YV=0:Y=(BYN-4)*8+4
NEXT
'Vタrifie la collision Droite-Gauche/Bond/Haut
'BX2 est le X du bloc devant soi
BX2=FLOOR(XN/8+XBG/+SENS
FOR D=1 TO 2
'BGID2 est les blocs devant
'la taille et la tツte
BGREAD(1,BX2,BYN-D),BGID2,BGP,BGHR,BGVR
'BGIDB est les blocs devant
'les jambes et les pieds (utilisタ en saut)
BGREAD(1,BX2,BYN+D-2),BGIDB,BGP,BGHR,BGVR
'BGIDT est le bloc au dessus
'de la tツte lors des sauts
BGREAD(1,BXN,BYN-4),BGIDT,BGP,BGHR,BGVR
'On change X ou Y en fonction
'de la collision
FOR I=0 TO 4
IF BGID2==SOL(I) THEN X=(BX2-SENS+0.5)*8-XBG
IF BGIDB==SOL(I) AND YN!=BGYS AND SOL(I)!=32 THEN X=(BX2-SENS+0.5)*8-XBG
IF BGIDT==SOL(I) THEN YV=YV+GR
NEXT:NEXT
'Permet d'activer la retombタe au sol.
IF BG==1 THEN BG=0
'Dタplacement du sprite du personnage.
SPOFS 0,X,Y
'On revient ラ la partie d'intタraction.
RETURN
'Ici un Scrolling horizontal
'Si XN>119 alors ScrollingBG
'Si Droite alors XBG=XBG+SENS*SPD:Dessine BG ラ FLOOR((XBG+8+256)/
'Bouge BG BGOFS 1,XBG,YBG
@SCROL
XBGA=XBG 'Coordonnタe X ancienne du dタcor
XBG=XBG+SPD 'Modifie X du dタcor de la mツme maniチre que le sprite
'Condition permettant de savoir
'si on a avancタ d'une case en
'scrolling horizontal afin de
'dessiner la suite du dタcor.
IF FLOOR(XBG/==FLOOR(XBGA/+1 THEN GOSUB @DESSBG
'Avance le dタcor pour un effet
'scrolling.
BGOFS 1,XBG,YBG
'On revient ラ la partie d'intタraction.
RETURN
'Dessine le dタcor, ici ラ l'infini.
'Tout est fait 1 case hors champs,
'ligne verticale par ligne verticale.
@DESSBG
FOR I=0 TO 23
READ DECOR(I):NUM=NUM+1
BGPUT 1,FLOOR((XBG+256)/,I,DECOR(I),8,0,0
NEXT
'Permet de rタpタter le dタcor ラ
'l'infini en restaurant les
'donnタes du label depuis
'le dタbut.
IF NUM==20*24 THEN NUM=0:RESTORE @DECOR1
RETURN
'Donnタes du dタcor non visible
'Chaque ligne de DATA correspond
'ラ une ligne verticale du dタcor,
'soit 24 nombres.
@DECOR1
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,32,165,165,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,32,165,165,165,165,165,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,32,165,165,165,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,32,165,165,165,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165,165,165
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,165,165,165,165,165,165,165,165,165
@ENNEMI
'Fait apparaケtre les ennemis en fonction du joueur
IF BXN==46 AND E10==0 THEN E10=1:GOSUB @ENNEMIS
IF E10==1 THEN GOSUB @EMARCHE
RETURN
'Affichage et donnタes de l'ennemi
@ENNEMIS
SPSET 10,128,2,0,0,0,16,32:SPANIM 10,2,FRQ:SPHOME 10,8,0
SPCOL 10,-6,8,12,24,1
XE=(XN+136):YE=76
SPOFS 10,XE,YE
RETURN
@EMARCHE
'Donnタes temps rタel
SPREAD(10),XEN,YEN:BXE=FLOOR(XEN/8+XBG/+ESENS:BYE=FLOOR(YEN/+4
BGREAD(1,BXE,BYE),BEID,BEP,BEHR,BEVR
'Modifit XE pour marcher
XE=XE+ESENS*SPD
'Rタgule la marche correctement lors du scrolling
IF XN>119 AND B8 AND B16==0 THEN XE=XE-SPD
'IF XN>119 AND (B==8 OR (B8 AND B32) OR (SPD==2 AND B8)) THEN XE=XE-SPD
'IF ESENS THEN XE=XE-SPD ELSE XE=XE-SPD
'Fait avancer l'ennemi sur le
'sol, il fait demi-tour si
'pas de sol devant lui.
FOR I=0 TO 4
IF BEID==SOL(I) AND E10==1 THEN SPOFS 10,XE,YE ELSE ESENS=ESENS*(-1)
NEXT
'Change le sprite ennemi suivant sa direction
IF ESENS==1 THEN SPCHR 10,132 ELSE SPCHR 10,128
'Dタsactive l'ennemi
IF XE<-8 THEN E10=0
RETURN
@ETOUCHE
'Si on frappe l'ennemi meurt
IF E10==1 AND (OLD==96 OR OLD==104) THEN IF SPHITSP(0,10) THEN SPCLR 10:E10=0
'Si on se fait toucher sans frapper :GameOver
IF E10==1 AND OLD!=96 AND OLD!=104 THEN IF SPHITSP(0,10) THEN GOTO @GAMEOVER
RETURN
@OBJETS
'Fait apparaケtre l'objet
IF BXN==72 AND O30==0 THEN O30=1:SPSET 30,60,2,0,0,0:X30=XN+120:SPOFS 30,X30,60
IF BXN==90 AND O31==0 THEN O31=1:SPSET 31,61,2,0,0,0:X31=XN+136:SPOFS 31,X31,60
'La fin apparait avec...
IF BXN==123 AND BUT==0 THEN BUT=1:SPSET 99,14,2,0,0,0:XBU=XN+136:YB=108:SPOFS 99,XBU,YB
'...une boクte de collision trチs grande pour タviter de passer par dessus
IF BUT THEN SPCOL 99,8,-64,16,128,0
'Fait rester ラ sa place l'objet
'C'est supposタ le faire
IF O30 THEN IF XN>119 AND B8 AND B16==0 THEN X30=X30-SPD:SPOFS 30,X30,60
IF O31 THEN IF XN>119 AND B8 AND B16==0 THEN X31=X31-SPD:SPOFS 31,X31,60
IF BUT THEN IF XN>119 AND B8 AND B16==0 THEN XBU=XBU-SPD:SPOFS 99,XBU,YB
'Efface l'objet s'il disparait de l'タcran
IF O30 AND X30<-16 THEN O30=0:SPCLR 30
IF O31 AND X31<-16 THEN O31=0:SPCLR 31
'Efface et rajoute l'objet dans l'inventaire
'SPHITSP est aprチs un THEN pour タviter une erreur si l'objet n'existe pas.
IF O30 THEN IF SPHITSP(0,30) THEN O30=0:SPCLR 30:POT=1:GOSUB @INVENTAIRE
IF O31 THEN IF SPHITSP(0,31) THEN O31=0:SPCLR 31:POT2=1:GOSUB @INVENTAIRE
RETURN
'Le menu inventaire est pas jolie mais c'est un exemple.
'C'est la partie graphique
@INVENTAIRE
PNLSTR 1,1,"┌──────────┐"
PNLSTR 1,2,"│INVENTAIRE│"
PNLSTR 1,3,"└──────────┘"
PNLSTR 1,5,"POTION :":PNLSTR 11,5,STR$(POT)
PNLSTR 1,6,"POTION2:":PNLSTR 11,6,STR$(POT2)
RETURN
'C'est la partie intタractivitタ
@ITEM
'Si pas d'objet: retour
IF POT==0 AND POT2==0 THEN B128=0:RETURN
'Si objet alors curseur
IF POT>0 THEN PNLSTR 0,5,"→":CUR=1
IF POT2>0 AND POT<1 THEN PNLSTR 0,6,"→":CUR=2
'Le WAIT est lラ pour que BTRIG() ne fasse pas ressortir du menu des items
WAIT 3:B4=0:B8=0:B16=0:B32=0:SPANIM 0,1,FRQ
@ITEM0
IF CUR==0 THEN IF ACUR>CUR THEN CUR=2
IF CUR==3 THEN IF ACUR<CUR THEN CUR=1
IF CUR==1 THEN PNLSTR 0,5,"→":PNLSTR 0,6," "
IF CUR==2 THEN PNLSTR 0,5," ":PNLSTR 0,6,"→"
IF BTRIG()==1 THEN WAIT 3:ACUR=CUR:CUR=CUR-1
IF BTRIG()==2 THEN WAIT 3:ACUR=CUR:CUR=CUR+1
IF BTRIG()==16 THEN WAIT 3:GOTO @USEITEM
IF BTRIG()==128 THEN WAIT 3:IF BUTTON()==128 THEN CLS:GOTO @INVENTAIRE
GOTO @ITEM0
@USEITEM
IF CUR==1 THEN POT=POT-1:GOTO @POT
IF CUR==2 THEN POT2=POT2-1:GOTO @POT2
RETURN
'Ce que fait l'objet si utilisタ.
'ナ modifier selon vos envies
@POT
GOSUB @INVENTAIRE
PNLSTR 0,5," "
PNLSTR 6,7,"C'est pas bon.":WAIT 30
PNLSTR 6,7," "
RETURN
@POT2
GOSUB @INVENTAIRE
PNLSTR 0,6," "
PNLSTR 6,7,"C'est inutile.":WAIT 30
PNLSTR 6,7," "
RETURN
'Fin du jeu
@TERMINUS
SPANIM 0,1,FRQ
SPCHR 0,114:BGCLR :CLS
BEEP 45,-8000:?"ナ vous de jouer, vous pouvez"
?"maintenant faire votre propre"
?"jeu de plateforme grリce aux"
?"bases que vous venez de"
?"dタcouvrir !!":?"":WAIT 120:?" Conルu et commentタ par J8B.":WAIT 180
END
'C'est loin d'ツtre complet
'mais ルa vous donne les bases
'de comment faire un jeu de
'plateforme.
'Bien sロr, il y a plusieurs
'faルons de faire, et la
'mienne n'est peut-ツtre pas
'la plus efficace.
'Le plus dur c'est de bien
'animer le tout, ルa peut-ツtre
'un vrai casse-tツte.
'Amusez-vous bien !!
'J8B de PetitComputer-France
Dernière édition par J8B le Jeu 6 Nov - 18:22, édité 3 fois (Raison : Nouvelle version du 6 novembre 2014)
Re: [Code]Début de Jeu de plateforme commenté
Publié a 2h38... Nan mais faut dormir dans la vie
Je dis ça mais à cette heure ci je suis sur que j'étais encore sur les sprites de mon RPG. Va y avoir tellement de ressources graphiques dans ce jeu... Les temps de chargement risquent d'être assez horrible.
Je dis ça mais à cette heure ci je suis sur que j'étais encore sur les sprites de mon RPG. Va y avoir tellement de ressources graphiques dans ce jeu... Les temps de chargement risquent d'être assez horrible.
Re: [Code]Début de Jeu de plateforme commenté
Il n'y avait pas encore le décalage d'une heure donc c'était le premier 2h
Re: [Code]Début de Jeu de plateforme commenté
Hhhhhhhhhaaaaaaaaaaaaaaaaaaaaaaaa! *musique céleste
mdr ma chérie me demande " pourquoi tu prends des photos de l'écran en ce moment"
devrais je lui dire que je scanne des Q....R codes, pour désamorcer une possible méprise???
Je pesne pas lui dire que les QR codes pour ce prog me donne de l'entrain!!! haha!
Hey! Sans les mains! :espace:espace:espace hahahahaha!
mdr ma chérie me demande " pourquoi tu prends des photos de l'écran en ce moment"
devrais je lui dire que je scanne des Q....R codes, pour désamorcer une possible méprise???
Je pesne pas lui dire que les QR codes pour ce prog me donne de l'entrain!!! haha!
Hey! Sans les mains! :espace:espace:espace hahahahaha!
CounterClockWize- Messages : 72
Date d'inscription : 23/08/2013
Re: [Code]Début de Jeu de plateforme commenté
Trop génial les lignes de code en haut qui s'affiche pour montrer les variable!
trop fort ce J8B!!!
questions: j'ai remarqué que dans beaucoup de jeux quand je commence à appuyer sur les directionnels le sprites glisse plus ou moins avant d'afficher sa dynamique de mouvement! il y a des jeu ou carrément quand on appuie très faiblement dans une direction avec le stick il glisse indéfiniment dan le tiens c'est très très léger) sais tu de quoi ça viens?Est ce le stick qui à plusieurs sensibilités/numéros(valeur bouton)?
trop fort ce J8B!!!
questions: j'ai remarqué que dans beaucoup de jeux quand je commence à appuyer sur les directionnels le sprites glisse plus ou moins avant d'afficher sa dynamique de mouvement! il y a des jeu ou carrément quand on appuie très faiblement dans une direction avec le stick il glisse indéfiniment dan le tiens c'est très très léger) sais tu de quoi ça viens?Est ce le stick qui à plusieurs sensibilités/numéros(valeur bouton)?
CounterClockWize- Messages : 72
Date d'inscription : 23/08/2013
Re: [Code]Début de Jeu de plateforme commenté
Un must have!!!
CounterClockWize- Messages : 72
Date d'inscription : 23/08/2013
Re: [Code]Début de Jeu de plateforme commenté
C'est bien attentionné de ta part
J'espère mieux comprendre comment vous structurez vos jeux (sans mes chères matrices du coup) grâce à ce programme !
J'espère mieux comprendre comment vous structurez vos jeux (sans mes chères matrices du coup) grâce à ce programme !
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Code]Début de Jeu de plateforme commenté
C'est un début de jeu, c'est loin d'être parfait niveau programmation, il y a sûrement d'autres manières de faire.
CounterClockWize, je te rapelle que j'ai une Dsi et donc pas de stick, si le mien est très léger, bah c'est que j'ai mieux codé (en gros faudrait comparé pour le savoir)
Par contre si tu appuies rapidement par intermittence sur une direction tu verras qu'il glisse car l'animation n'a pas le temps d'effecutuer son cycle.
Le fait de cet impression est peut-être du que je change l'image du sprite (avec SPCHR) qui est la même que quand on touche à rien. Faudrait un sprite d'attente comme celui d'Alex Kidd in Miracle World (oui c'est encore lui, c'est ma référence) pour éviter cet impression je pense, ça reste à tester.
Le jeu n'est pas complet donc vous n'avez que le début de la structure d'un jeu.
Il n'y a pas de but, du moins pas encore dans cette version. Le passage de niveau se fera sûrement avec une variable qui conduira au bon label.
Je pense que maîtriser un jeu de plateforme, c'est la possibilité de faire tous les autres types de jeu (du moins une très grande partie).
J'adore ton enthousiasme Counter
CounterClockWize, je te rapelle que j'ai une Dsi et donc pas de stick, si le mien est très léger, bah c'est que j'ai mieux codé (en gros faudrait comparé pour le savoir)
Par contre si tu appuies rapidement par intermittence sur une direction tu verras qu'il glisse car l'animation n'a pas le temps d'effecutuer son cycle.
Le fait de cet impression est peut-être du que je change l'image du sprite (avec SPCHR) qui est la même que quand on touche à rien. Faudrait un sprite d'attente comme celui d'Alex Kidd in Miracle World (oui c'est encore lui, c'est ma référence) pour éviter cet impression je pense, ça reste à tester.
Le jeu n'est pas complet donc vous n'avez que le début de la structure d'un jeu.
Il n'y a pas de but, du moins pas encore dans cette version. Le passage de niveau se fera sûrement avec une variable qui conduira au bon label.
Je pense que maîtriser un jeu de plateforme, c'est la possibilité de faire tous les autres types de jeu (du moins une très grande partie).
J'adore ton enthousiasme Counter
Re: [Code]Début de Jeu de plateforme commenté
C'est une très bonne initiative le fait que tu face ce jeu commenté ( en plus le debug mode, la cerise sur le gateau). Pour un néophyte déchiffrer du code c'est pareille que de ce balader dans un labyrinthe en semi obscurité avec sur les murs des illusions d'optique peintes en fluo! On commence par regarder les commandes, aller sur le net voir un tuto spécifique ( donc très cloisonné), on découvre une autre commande etc puis dans le programme on suit les label, les goto,gosub, les variables qui reviennent...et là on est perdu!!! Trop de chose à assimilé d'un coup et la structure même d'un programme freine beaucoup l'apprentissage à cause de tous ses petits liens dont on a du mal à définir l'utilité.
Les commentaires servent en plus de pense bêtes pour ce repérer, car il arrive que quand on apprends 3ou 4 nouvelles choses( à approfondir en même temps) on soit perdu et on ne ce souviens plus vraiment de qu'est ce qui est quoi...
Je pense que ça va débloquer pas mal de monde!
La je suis en train de péter ton code depuis tout à l'heure mdr
Je fais du gros nimp pour voir quel effet ça donne, j'essaie de visualiser le potentiel des commandes, des morceaux de codes, voir la syntaxe, et (important) l'architecture, j'essaie aussi de me faire une idée du parcourt de lecture du programme et l'interaction des morceaux de codes entre eux.
Les commentaires servent en plus de pense bêtes pour ce repérer, car il arrive que quand on apprends 3ou 4 nouvelles choses( à approfondir en même temps) on soit perdu et on ne ce souviens plus vraiment de qu'est ce qui est quoi...
Je pense que ça va débloquer pas mal de monde!
La je suis en train de péter ton code depuis tout à l'heure mdr
Je fais du gros nimp pour voir quel effet ça donne, j'essaie de visualiser le potentiel des commandes, des morceaux de codes, voir la syntaxe, et (important) l'architecture, j'essaie aussi de me faire une idée du parcourt de lecture du programme et l'interaction des morceaux de codes entre eux.
CounterClockWize- Messages : 72
Date d'inscription : 23/08/2013
Re: [Code]Début de Jeu de plateforme commenté
Haha, content que ça serve.
N'hésitez pas à poser des questions, on est tous là pour apprendre (y compris moi)
N'hésitez pas à poser des questions, on est tous là pour apprendre (y compris moi)
Re: [Code]Début de Jeu de plateforme commenté
J'ai l'impression que le forum reprends vie depuis quelques temps !
Re: [Code]Début de Jeu de plateforme commenté
La vache, c'est compliqué à comprendre la sauvegarde package...
Quelqu'un peut me faire une récap' écrite svp ? X)
Quelqu'un peut me faire une récap' écrite svp ? X)
Re: [Code]Début de Jeu de plateforme commenté
Fenixelf > Pour ça je crois qu'il faut maîtriser le binaire, et ça... j'ai pas x)
J'aimerais plutôt qu'on m'explique l'intérêt de PACKAGE$
J'aimerais plutôt qu'on m'explique l'intérêt de PACKAGE$
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Code]Début de Jeu de plateforme commenté
Les bits c'est une question de binaire? J8B ?
Ouep, l'interêt premier de PACKAGE$ c'est que ca te crée pas de fichier additionnel : pas de MEM, pas de GRP... Mais j'voudrais bien un tuto rapide dessus quand même !
Ouep, l'interêt premier de PACKAGE$ c'est que ca te crée pas de fichier additionnel : pas de MEM, pas de GRP... Mais j'voudrais bien un tuto rapide dessus quand même !
Re: [Code]Début de Jeu de plateforme commenté
Oui c'est du binaire, le 1 pour l'activer, et le 0 pour le désactiver. Si j'écris des bêtises dites le moi surtout en ce qui concerne les termes que j'utilise, je voudrais pas rendre le tout confus.
Ok j'en ferai un, mais l'exemple dans le programme combiné avec la liste PACKAGE dans mon fichier d'aide devrait être un peu suffisant pour arriver à comprendre comment ça marche.
Ok j'en ferai un, mais l'exemple dans le programme combiné avec la liste PACKAGE dans mon fichier d'aide devrait être un peu suffisant pour arriver à comprendre comment ça marche.
Re: [Code]Début de Jeu de plateforme commenté
Voici une nouvelle version du programme, avec peu de nouveautés mais j'ai du reécrire le code pour régler quelques soucis d'animation notamment. Par exemple si vous sauter en maintenant la touche haut, lorsque que le personnage attérit il serait animé si la touche haut était toujours enfoncé, ce soucis est maintenant corrigé.
Re: [Code]Début de Jeu de plateforme commenté
Hum il nous fait un doigt d'honneur si on l'envoie dans le ravin ? C'est subtil ça
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Code]Début de Jeu de plateforme commenté
Ah bah, il est pas content d'avoir était jeté dans le ravin
Re: [Code]Début de Jeu de plateforme commenté
Nouvelle version du programme, allez vite sur la première page pour voir les nouveautés. Je pense que vous avez les premiers éléments pour faire un petit jeu de plateforme maintenant. A votre imagination de faire le reste
Re: [Code]Début de Jeu de plateforme commenté
C'est fait pour vous montrez un exemple, à vous de mettre les objets ou les potions que vous avez envie.
Re: [Code]Début de Jeu de plateforme commenté
a j'ai trouvé un bug !
si t'appuie sur le bouton pour avancer avant d'appuyer sur A (oui je suis très patient ) le personnage avance et ne s'anime pas et l'ennemi n'avance pas !!
Impressionné par mon bgeisme
si t'appuie sur le bouton pour avancer avant d'appuyer sur A (oui je suis très patient ) le personnage avance et ne s'anime pas et l'ennemi n'avance pas !!
Impressionné par mon bgeisme
Re: [Code]Début de Jeu de plateforme commenté
Merci de l'avoir signaler.
Tiens faisons un exercice, le réglage de ce bug, envoyer votre solution en spoil, histoire de voir si tout le monde peut y arriver.
Le bug survient si on laisse appuyer sur une direction au menu et qu'on appuie sur A pour aller dans le niveau.
Tiens faisons un exercice, le réglage de ce bug, envoyer votre solution en spoil, histoire de voir si tout le monde peut y arriver.
Le bug survient si on laisse appuyer sur une direction au menu et qu'on appuie sur A pour aller dans le niveau.
- Solution, arriverez-vous à trouver la même ou une variante avant de regarder ?:
- En rouge vérifie si la variable du bouton qui vient d'être appuyé, est vraie ou fausse
A partir de la Ligne167:
IF B AND 4 THEN IF B4 THEN GOSUB @AVANCE
IF B AND 8 THEN IF B8 THEN GOSUB @AVANCE
Sujets similaires
» [Code]IA multiples
» [Code]MGVD
» [Code]Mouvement case par case et collisions
» Transformer un programme en QR code
» [Tutoriel][Code] La fonction Dim
» [Code]MGVD
» [Code]Mouvement case par case et collisions
» Transformer un programme en QR code
» [Tutoriel][Code] La fonction Dim
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum