Probleme de code source

cs_iLow Messages postés 2 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 19 août 2005 - 19 août 2005 à 19:11
cs_iLow Messages postés 2 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 19 août 2005 - 19 août 2005 à 22:00
Je suis actuellement sur un tutorial pour un jeu dénomé "space war 1" mais je rencontre plusieur probleme.

Je vais vous montrer deux codes differents(basé sur le meme jeu) que j'ai ecrit et vous expliquer quelle partie du code me pose probleme et l'effet que celui-ci est censé produire (vu la simplicité du code-je suis débutant et je trouve que cela est assez simple dans l'ensemble-je pense que vous devriez de toute facon comprendre)

1er code et 1er probleme:

'EXPLORER.BAS
'Ecrit par eliot le 18/08/2005
'
'
'Afficher une explosion avec fond sonore sur un background !
nomainwin


'etape1 : mettre en place la fenetre graphique
'donner les dimensions de la fenetre
WindowWidth=400
WindowHeight=430
'la fenetre doit apparaitre au milieu de l'écran
UpperLeftX=Int((DisplayWidth-WindowWidth)/2)
UpperLeftY=Int((DisplayHeight-WindowHeight)/2)


'Ouvrir la fenetre est attandre
open "space war I" for graphics_nsb as #game
#game, "trapclose [quit]"
'etape2 : affichier les sprites et le background dans la fenetre


'charger tous les sprites en memoire
loadbmp "bg", "space.bmp"
loadbmp "explo1", "explo1.bmp"
loadbmp "explo2", "explo2.bmp"
loadbmp "explo3", "explo3.bmp"
loadbmp "explo4", "explo4.bmp"
loadbmp "explo5", "explo5.bmp"
loadbmp "meteroite", "meteorite.bmp"
loadbmp "blueplanet", "blueplanet.bmp"
loadbmp "spider1", "spider1.bmp"
loadbmp "spider2", "spider2.bmp"
loadbmp "rouge12", "rouge12.bmp"
loadbmp "redshot", "redshot.bmp"
loadbmp "alien1", "alien1.bmp"
loadbmp "alien2", "alien2.bmp"
loadbmp "alien3", "alien3.bmp"
loadbmp "bomb", "bomb.bmp"
loadbmp "bigexplo1", "bigexplo1.bmp"
loadbmp "bigexplo2", "bigexplo2.bmp"
loadbmp "bigexplo3", "bigexplo3.bmp"
loadbmp "bigexplo4", "bigexplo4.bmp"
loadbmp "bigexplo5", "bigexplo5.bmp"


'ajouter le background et les sprites a la fenetre #game
#game, "background bg"
#game, "addsprite explo explo1 explo2 explo3 explo4 explo5"
#game, "addsprite bigexplo bigexplo1 bigexplo2 bigexplo3 bigexplo4 bigexplo5"
#game, "addsprite alien alien1 alien2 alien3"
#game, "addsprite bomb bomb"
#game, "addsprite meteroite meteroite"
#game, "addsprite spider spider1 spider2"
#game, "addsprite blueplanet blueplanet"
#game, "addsprite redshot redshot"


'afficher l'explosion a l'exterieur de la fenetre
#game, "spritexy explo 500 500"


'placer les sprites à un endroit précis
'la position du sprite est exprimée par deux variable
exploX=500:exploY=500
bigexploX=500:bigexploY=500
rouge12X=180:rouge12Y=320
metX=500:metY=500
spiderX=500:spiderY=500
bpX=50:bpY=10
redshotX=500:redshotY=500
alienX=500:alienY=500
bombX=500:bombY=500
#game, "addsprite explo ";exploX;" ";exploY;
#game, "addsprite bigexplo ";bigexploX;" ";bigexploY;
#game, "addsprite rouge12 ";rouge12X;" ";rouge12Y;
#game, "addsprite meteroite ";metX;" ";metY;
#game, "addsprite spider ";spiderX;" ";spiderY;
#game, "addsprite blueplanet ";bluplanetX;" ";blueplanetY;
#game, "addsprite redshot ";redshotX;" ";redshotY;
#game, "addsprite alien ";alienX;" ";alienY;
#game, "addsprite bomb ";bombX;" ";bombY;


'cycler la liste d'explosion
#game, "cyclesprite explo 1"
#game, "cyclesprite bigexplo 1"
#game, "cyclesprite spider 1"
#game, "cyclesprite alien 1"


'etape3 : animer l'explosion


'initialiser toutes les variables
exploactive=0
exlpocount=0


'regler le timer à 100 millisecondes
timer 100, [timer_routines]


'etape4 : controler le clavier
#game, "setfocus"
#game,"when characterInput [control_touche]"
wait


[control_touche]
if Inkey$=" " then gosub [exploser]


'afficher le tout dans la fenetre
#game, "drawsprites"
wait



'afficher explosion avec bruit
#game, "spritexy explo 180 190"
playwave "explosion.wav",async


'toutes les routines qui doivent etre executées
'tous les dixiemes de seconde
[timer_routines]
gosub [control_explo]
gosub [draw]
wait


'etape5 : terminer le programme


[quit]
unloadbmp "bg"
unloadbmp "explo1"
unloadbmp "explo2"
unloadbmp "explo3"
unloadbmp "explo4"
unloadbmp "explo5"
unloadbmp "meteroite"
unloadbmp "blueplanet"
unloadbmp "spider1"
unloadbmp "spider2"
unloadbmp "rouge12"
unloadbmp "redshot"
unloadbmp "alien1"
unloadbmp "alien2"
unloadbmp "alien3"
unloadbmp "bomb"
unloadbmp "bigexplo1"
unloadbmp "bigexplo2"
unloadbmp "bigexplo3"
unloadbmp "bigexplo4"
unloadbmp "bigexplo5"
confirm "es-tu sur de vouloir quitter ?";reponse$
if reponse$ = "no" then wait
close #game
end



'routines


'afficher une explosion s'il n'y en a pas deja


[exploser]
'afficher une explosion s'il n'y en a pas deja
'une en cours
if exploactive = 0 then
#game, "spritexy explo 180 190"


'indiquer maintenant qu'une explosion est en cours
exploactive=1
playwave "explosion.wav",async
end if
return


'controler la durée de l'explosion


[control_explo] if exploactive 1 then explocount explocount + 1
if explocount > 15 then
exploactive=0
explocount=0
#game, "spritexy explo 500 500"
end if
return


'dessiner tous les sprites dans la fenetre


[draw]
#game, "drawsprites";
return


'afficher le tout dans la fenetre
#game, "drawsprites"
wait


La partie qui me pose un probleme est celle-ci :

exploX=500:exploY=500
bigexploX=500:bigexploY=500
rouge12X=180:rouge12Y=320
metX=500:metY=500
spiderX=500:spiderY=500
bpX=50:bpY=10
redshotX=500:redshotY=500
alienX=500:alienY=500
bombX=500:bombY=500
#game, "addsprite explo ";exploX;" ";exploY;
#game, "addsprite bigexplo ";bigexploX;" ";bigexploY;
#game, "addsprite rouge12 ";rouge12X;" ";rouge12Y;
#game, "addsprite meteroite ";metX;" ";metY;
#game, "addsprite spider ";spiderX;" ";spiderY;
#game, "addsprite blueplanet ";bluplanetX;" ";blueplanetY;
#game, "addsprite redshot ";redshotX;" ";redshotY;
#game, "addsprite alien ";alienX;" ";alienY;
#game, "addsprite bomb ";bombX;" ";bombY;


'cycler la liste d'explosion
#game, "cyclesprite explo 1"
#game, "cyclesprite bigexplo 1"
#game, "cyclesprite spider 1"
#game, "cyclesprite alien 1"

Probleme encouru : Lorsque j'utilise la fonction "run" (aperçu) j'ai un message d'erreur du style "error bitmap named 500 not found"

_2ieme code et 2ieme probleme :

'EXPLORER.BAS
'Ecrit par eliot le 18/08/2005
'
'
'Afficher une explosion avec fond sonore sur un background !
nomainwin


'etape1 : mettre en place la fenetre graphique
'donner les dimensions de la fenetre
WindowWidth=400
WindowHeight=430
'la fenetre doit apparaitre au milieu de l'écran
UpperLeftX=Int((DisplayWidth-WindowWidth)/2)
UpperLeftY=Int((DisplayHeight-WindowHeight)/2)


'Ouvrir la fenetre est attandre
open "space war I" for graphics_nsb as #game
#game, "trapclose [quit]"
'etape2 : affichier les sprites et le background dans la fenetre


'charger tous les sprites en memoire
loadbmp "bg", "space.bmp"
loadbmp "explo1", "explo1.bmp"
loadbmp "explo2", "explo2.bmp"
loadbmp "explo3", "explo3.bmp"
loadbmp "explo4", "explo4.bmp"
loadbmp "explo5", "explo5.bmp"
loadbmp "meteroite", "meteorite.bmp"
loadbmp "blueplanet", "blueplanet.bmp"
loadbmp "spider1", "spider1.bmp"
loadbmp "spider2", "spider2.bmp"
loadbmp "rouge12", "rouge12.bmp"
loadbmp "redshot", "redshot.bmp"
loadbmp "alien1", "alien1.bmp"
loadbmp "alien2", "alien2.bmp"
loadbmp "alien3", "alien3.bmp"
loadbmp "bomb", "bomb.bmp"
loadbmp "bigexplo1", "bigexplo1.bmp"
loadbmp "bigexplo2", "bigexplo2.bmp"
loadbmp "bigexplo3", "bigexplo3.bmp"
loadbmp "bigexplo4", "bigexplo4.bmp"
loadbmp "bigexplo5", "bigexplo5.bmp"


'ajouter le background et les sprites a la fenetre #game
#game, "background bg"
#game, "addsprite explo explo1 explo2 explo3 explo4 explo5"
#game, "addsprite bigexplo bigexplo1 bigexplo2 bigexplo3 bigexplo4 bigexplo5"
#game, "addsprite alien alien1 alien2 alien3"
#game, "addsprite bomb bomb"
#game, "addsprite meteroite meteroite"
#game, "addsprite spider spider1 spider2"
#game, "addsprite blueplanet blueplanet"
#game, "addsprite redshot redshot"
#game, "addsprite rouge12 rouge12"


'afficher l'explosion a l'exterieur de la fenetre
#game, "spritexy explo 500 500"
#game, "spritexy bigexplo 500 500"
#game, "spritexy rouge12 180 320"
#game, "spritexy meteroite 500 500"
#game, "spritexy spider 500 500"
#game, "spritexy blueplanet 50 10"
#game, "spritexy redshot 500 500"
#game, "spritexy alien 500 500"
#game, "spritexy bomb 500 500"


'cycler la liste d'explosion
#game, "cyclesprite explo 1"
#game, "cyclesprite bigexplo 1"
#game, "cyclesprite spider 1"
#game, "cyclesprite alien 1"
'etape3 : animer l'explosion


'initialiser toutes les variables
exploactive=0
exlpocount=0
gauche=0
agauche=0


'regler le timer à 100 millisecondes
timer 100, [timer_routines]


'etape4 : controler le clavier
#game, "setfocus"
#game,"when characterInput [control_touche]"
wait
'utiliser les touches numeriques
[control_touche]
k$=inkey$ 'plus simple à ecrire
if k$="9" or k$="6" then rouge12X=rouge12X+5 'aller a gauche
if k$="7" or k$="4" then rouge12X=rouge12X-5 'aller a droite
if k$="9" or k$="8" or k$="7" then rouge12Y=rouge12Y-5 'aller en haut
if k$="5" then rouge12Y=rouge12Y+5 'aller en bas


'le vaisseau ne doit pas depasser les bords
if rouge12X<1 then rouge12X=1
if rouge12Y>350 then rouge12Y=350
if rouge12Y<55 then rouge12Y=55
if rouge12X>330 then rouge12X=330


'faire avancer le vaisseau
print #game, "spritexy rouge12 ";rouge12X;" ";rouge12Y



'afficher le tout dans la fenetre
#game, "drawsprites"
wait



'afficher explosion avec bruit
#game, "spritexy explo 180 190"
playwave "explosion.wav",async


'toutes les routines qui doivent etre executées
'tous les dixiemes de seconde
[timer_routines]
gosub [go_alien]
gosub [go_meteroite]
gosub [go_blueplanet]
gosub [go_spider]
gosub [control_explo]
gosub [draw]
wait


'etape5 : terminer le programme


[quit]
unloadbmp "bg"
unloadbmp "explo1"
unloadbmp "explo2"
unloadbmp "explo3"
unloadbmp "explo4"
unloadbmp "explo5"
unloadbmp "meteroite"
unloadbmp "blueplanet"
unloadbmp "spider1"
unloadbmp "spider2"
unloadbmp "rouge12"
unloadbmp "redshot"
unloadbmp "alien1"
unloadbmp "alien2"
unloadbmp "alien3"
unloadbmp "bomb"
unloadbmp "bigexplo1"
unloadbmp "bigexplo2"
unloadbmp "bigexplo3"
unloadbmp "bigexplo4"
unloadbmp "bigexplo5"
confirm "es-tu sur de vouloir quitter ?";reponse$
if reponse$ = "no" then wait
close #game
end



'ROUTINES


[go_alien]
'D'abord on verifie la position de la meteorite
#game, "spritexy? alien alienX alienY"


'si l'alien deborde de l'un des coté
if alienX > 450 or alienY > 480 or alienX < 0 or alienY < 0 then
alienY=int(rnd(0)*100)+1
'si 'alien vient de la direction gauche>droite
'repartir en direction droite>gauche
if agauche = 0 then
alienX=0
agauche=1
#game, "spritemovexy alien 5 4"
'si c'est l'inverse
else
alienX=450
agauche=0
#game, "spritemovexy alien -5 4"
end if
#game, "spritexy alien ";alienX;" ";alienY
end if
return


[go_meteroite]
'D'abord on verifie la position de la meteorite
#game, "spritexy? meteroite metX metY"
'si la meteorite deborde de n'importe quel coté
if metX > 450 or metY > 480 or metX < 0 or metY < 0 then
metY=int(rnd(0)*400)+1
'si la meteorite vient de la direction gauche>droite la faire
'repartir dans une direction droite>gauche
if gauche = 0 then
metX=450
gauche=1
#game, "spritemovexy meteroite -2 1"
'si c'est l'inverse
else
gauche=0
metX=0
#game, "spritemovexy meteroite 2 1"
end if
#game, "spritexy meteroite ";metX;" ";metY
end if
return


[go_blueplanet]
'D'abord on verifie la position de la planete
#game, "spritexy? blueplanet bpX bpY"
'si la planete depasse le bord inferieur de la fenetre
'la replacer en haut 50pixels plus a droite


#game, "spritexy? blueplanet bpX bpY"
if spiderY>400 then
bpX=50
bpY=-50
#game, "spritexy blueplanet ";bpX;" ";bpY
end if
bpY=bpY+4
#game, "spritexy blueplanet ";bpX;" ";bpY
return


'faire avancer l'araignée


[go_spider]
#game, "spritexy? spider spiderX spiderY"
if spiderY>400 then
spiderX=int(rnd(0)*350)+1
spiderY=0
#game, "spritexy spider ";spiderX;" ";spiderY
end if
spiderY=spiderY+5
#game, "spritexy spider ";spiderX;" ";spiderY
return


'controler la durée de l'explosion


[control_explo] if exploactive 1 then explocount explocount + 1
if explocount > 15 then
exploactive=0
explocount=0
#game, "spritexy explo 500 500"
end if
return


'dessiner tous les sprites dans la fenetre


[draw]
#game, "drawsprites";
return


'afficher le tout dans la fenetre
#game, "drawsprites"
wait


La partie qui me pose probleme :

'etape4 : controler le clavier
#game, "setfocus"
#game,"when characterInput [control_touche]"
wait
'utiliser les touches numeriques
[control_touche]
k$=inkey$ 'plus simple à ecrire
if k$="9" or k$="6" then rouge12X=rouge12X+5 'aller a gauche
if k$="7" or k$="4" then rouge12X=rouge12X-5 'aller a droite
if k$="9" or k$="8" or k$="7" then rouge12Y=rouge12Y-5 'aller en haut
if k$="5" then rouge12Y=rouge12Y+5 'aller en bas


'le vaisseau ne doit pas depasser les bords
if rouge12X<1 then rouge12X=1
if rouge12Y>350 then rouge12Y=350
if rouge12Y<55 then rouge12Y=55
if rouge12X>330 then rouge12X=330


'faire avancer le vaisseau
print #game, "spritexy rouge12 ";rouge12X;" ";rouge12Y

Probleme encouru : Le vaisseau est censé pouvoir ce déplacer grace au touche "4,5,6,7,8,9" du clavier numérique mais lorsque je l'ai utilise,le vaisseau se retrouve dans le coin superieur gauche de l'écran.

Voila je pense avoir fait le tour de "mes problemes" et je vous remercie de m'éclrairer sur mes erreurs.
Merci d'avoir eu le courage de lire jusqu'au bout :D
Bien à vous.

ps : Si vous pouviez critiquer de maniere constructive la maniere dont est écrit le code...je vous en remercierai :)
ps2:Oui c'est du liberty basic ( faut bien débuter :p )

2 réponses

cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
19 août 2005 à 20:26
Perso je connais pas ce language, même s'il est proche de VB (basic) les fonctions ne le disent rien.

Essayes le Qbasic en mode console si windows c'est un peu trop complexe, mais sinon je te conséillerais comme même VB pour débuter, t'as plein d'exemples ICI.

(Regardes PureBasic c'est dans le même style que ton language)

aKheNAtHoN
0
cs_iLow Messages postés 2 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 19 août 2005
19 août 2005 à 22:00
Oui je sais que débuter en VB est le moyen le plus connu mais pour des raisons personnelles ( vacances,accecibilitées aux pc ) ce language est l'un des seuls que je peux utiliser et exlpoiter actuellement ( pas possible de télécharger sur ce pc et acheter VB6 ne me dit trop rien :p ) donc je me contente de ce que j'ai jusqu'a présent mais je pense que la logique du LB est proche du VB donc quite à attendre d'avoir VB6 autant utiliser ce temps à autres choses.

J'attends toujours la réponse à mon probleme donc si quelqu'un pouvait m'aider :)
N'hésitez pas à commenter mon code,la maniere dont je l'ai écrit etc...

ps: je ne me dis pas auteur de ce code mais la maniere dont il est présenté m'est propre

Merci d'avance.

ilow^
0
Rejoignez-nous