Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| un bug je pense, un objet alpha qui pose probleme | |
| | Auteur | Message |
---|
dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: un bug je pense, un objet alpha qui pose probleme Dim 12 Déc 2010 - 15:34 | |
| Dans ce code on peut voir que l'objet alpha 9 existe, et pourtant dés le lancement du programme l'objet alpha peut soit apparaître soit ne pas apparaître, c'est aléatoire. Et à aucun moment je ne fais un hide sur l'objet. - Code:
-
label attaque label repos label bonus label petit label moyen label grand label tests label hasard label affiche label cree_pc label cree_joueur label tour_pc label tour_joueur label passer
dim energie,tours,tour dim sonar,canon,mouvement dim nombre,i,y,x,map,posX dim caseY,caseX,lig,col dim taille dim valeur$ dim energie_pc,energie_joueur dim nom$,joueur$
' Fixe l'affichage à 800x600 width 0,800 height 0,600
' crée la scene où va s'afficher la map joueur et la cache. scene2d 1 hide 1
' crée la scene où va s'afficher la map pc et la cache. scene2d 10 hide 10
' Pour tester les touches clavier timer 2 timer_interval 2,1 on_timer 2, tests
' Affiche une barre d'énergie alpha 3 font_size 3,15 caption 3,"energie" left 3,350
' Demande de choisir la taille de map alpha 4 font_size 4,10 caption 4,"Choisissez la taille de la carte" left 4,300 top 4,200 ' Affiche le choix "petite map" alpha 5 font_size 5,14 caption 5,"Petite" left 5,250 top 5,220 cursor_point 5 on_click 5,petit ' Affiche le choix "moyenne map" alpha 6 font_size 6,14 caption 6,"Moyenne" left 6,335 top 6,220 cursor_point 6 on_click 6,moyen ' Affiche le choix "grande map" alpha 7 font_size 7,14 caption 7,"Grande" left 7,450 top 7,220 cursor_point 7 on_click 7,grand ' Affiche le nom du commandant alpha 8 font_size 8,10 left 8,250 top 8,0 hide 8 ' Affiche le proprietaire de la carte alpha 9 font_size 9,14 caption 9,"carte" left 9,50 top 9,30
' fixe l'énergie du pc à 20 energie_pc=20
' fixe l'énergie du joueur à 20 energie_joueur=20
' C'est le joueur qui commence le tour de jeu tour=0
end
passer: ' Passe le tour de jeu if tour=0 tour=1 else tour=0 end_if return
affiche: ' Cache les choix de taille de map hide 4 hide 5 hide 6 hide 7 ' Affiche la map du joueur en cours select tour case 0:gosub tour_joueur case 1:gosub tour_pc end_select caption 8,"Commandant "+nom$ ' affiche le nom du joueur show 8 return
cree_joueur: ' place 1 aléatoirement (un nombre de fois indiqué par "nombre") dans le tableau de map virtuel ' pour le joueur i=0 while i<nombre gosub hasard if (tab_joueur(caseX,caseY)=1) gosub hasard else tab_joueur(caseX,caseY)=1 i=i+1 end_if end_while ' cache la map du joueur hide 1 ' lit le tableau pour afficher sur la map un sprite à la place de 1 lu dans le tableau. ' cette routine dessine les unités du joueur sur sa map (la map 1) sprite_target_is 1 i=1 for lig=0 to taille-1 for col=0 to taille-1 if (tab_joueur(lig,col)=1) sprite i sprite_file_load i,"submarine.bmp" y=32+(32*lig) x=32+(32*col) sprite_position i,x,y i=i+1 end_if next col next lig nom$="player" return
cree_pc: ' place 1 aléatoirement (un nombre de fois indiqué par "nombre") dans le tableau de map virtuel ' pour le pc i=0 while i<nombre gosub hasard if (tab_pc(caseX,caseY)=1) gosub hasard else tab_pc(caseX,caseY)=1 i=i+1 end_if end_while ' lit le tableau pour afficher sur la map un sprite à la place de 1 lu dans le tableau. ' cette routine n'est appelée qu'en fin de partie pour afficher la map pc sprite_target_is 10 i=i+1 for lig=0 to taille-1 for col=0 to taille-1 if (tab_pc(lig,col)=1) sprite i sprite_file_load i,"submarine.bmp" y=32+(32*lig) x=32+(32*col) sprite_position i,x,y i=i+1 end_if next col next lig nom$="ordi" return
' Affiche le tour du joueur et ses points tour_joueur: caption 3,"Energie : "+str$(energie_joueur) caption 9,"Carte du joueur "+nom$ hide 10 show 1 return
' Affiche le tour du pc et ses points tour_pc: caption 3,"Energie : "+str$(energie_pc) caption 9,"Carte du joueur "+nom$ hide 1 show 10 return
attaque: return
repos: return
bonus: return
' fixe la taille de la map à 5x5 petit: taille=5 dim tab_joueur(5,5) dim tab_pc(5,5) map=192 posX=int(800/2)-int(map/2) left 1,posX top 1,200 width 1,map height 1,map file_load 1,"grille05.bmp" left 10,posX top 10,100 width 10,map height 10,map file_load 10,"grille05.bmp" nombre=3 ' crée la map du joueur gosub cree_joueur ' crée la map du pc gosub cree_pc ' Affiche la map du joueur en cours gosub affiche return
' fixe la taille de la map à 10x10 moyen: taille=10 dim tab_joueur(10,10) dim tab_pc(10,10) map=352 posX=int(800/2)-int(map/2) left 1,posX top 1,100 width 1,map height 1,map file_load 1,"grille10.bmp" nombre=5 gosub affiche return
' fixe la taille de la map à 15x15 grand: taille=15 dim tab_joueur(15,15) dim tab_pc(15,15) map=512 posX=int(800/2)-int(map/2) left 1,posX top 1,30 width 1,map height 1,map file_load 1,"grille15.bmp" nombre=10 gosub affiche return
tests: if scancode=27 then terminate return
' détermine la position aléatoire dans le tableau de map virtuel. hasard: caseY=int(rnd(taille-1)) caseX=int(rnd(taille-1)) return
Le programme se lance bien sûr par F9 mais s'arrête par ESC (echap) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: un bug je pense, un objet alpha qui pose probleme Dim 12 Déc 2010 - 16:11 | |
| Eh bien, tu retombes toujours dans le même piège: tu permets les évènements alors que tu es encore en phase linéaire ! Il ne faut pas activer le timer trop tôt, mais juste avant de END, car contrairement aux autres évènements (on_click, ...) qui ne se produisent qu'avec une intervention de l'utilisateur, on_timer se produit directement : Voici ton code avec une légère modif, et ça marche: - Code:
-
label attaque label repos label bonus label petit label moyen label grand label tests label hasard label affiche label cree_pc label cree_joueur label tour_pc label tour_joueur label passer
dim energie,tours,tour dim sonar,canon,mouvement dim nombre,i,y,x,map,posX dim caseY,caseX,lig,col dim taille dim valeur$ dim energie_pc,energie_joueur dim nom$,joueur$
' Fixe l'affichage à 800x600 width 0,800 height 0,600
' crée la scene où va s'afficher la map joueur et la cache. scene2d 1 hide 1
' crée la scene où va s'afficher la map pc et la cache. scene2d 10 hide 10
' Pour tester les touches clavier timer 2 timer_interval 2,1 ' on_timer 2, tests
' Affiche une barre d'énergie alpha 3 font_size 3,15 caption 3,"energie" left 3,350
' Demande de choisir la taille de map alpha 4 font_size 4,10 caption 4,"Choisissez la taille de la carte" left 4,300 top 4,200 ' Affiche le choix "petite map" alpha 5 font_size 5,14 caption 5,"Petite" left 5,250 top 5,220 cursor_point 5 on_click 5,petit ' Affiche le choix "moyenne map" alpha 6 font_size 6,14 caption 6,"Moyenne" left 6,335 top 6,220 cursor_point 6 on_click 6,moyen ' Affiche le choix "grande map" alpha 7 font_size 7,14 caption 7,"Grande" left 7,450 top 7,220 cursor_point 7 on_click 7,grand ' Affiche le nom du commandant alpha 8 font_size 8,10 left 8,250 top 8,0 hide 8 ' Affiche le proprietaire de la carte alpha 9 font_size 9,14 caption 9,"carte" left 9,50 top 9,30
' fixe l'énergie du pc à 20 energie_pc=20
' fixe l'énergie du joueur à 20 energie_joueur=20
' C'est le joueur qui commence le tour de jeu tour=0
end
passer: ' Passe le tour de jeu if tour=0 tour=1 else tour=0 end_if on_timer 2, tests return
affiche: ' Cache les choix de taille de map hide 4 hide 5 hide 6 hide 7 ' Affiche la map du joueur en cours select tour case 0:gosub tour_joueur case 1:gosub tour_pc end_select caption 8,"Commandant "+nom$ ' affiche le nom du joueur show 8 return
cree_joueur: ' place 1 aléatoirement (un nombre de fois indiqué par "nombre") dans le tableau de map virtuel ' pour le joueur i=0 while i<nombre gosub hasard if (tab_joueur(caseX,caseY)=1) gosub hasard else tab_joueur(caseX,caseY)=1 i=i+1 end_if end_while ' cache la map du joueur hide 1 ' lit le tableau pour afficher sur la map un sprite à la place de 1 lu dans le tableau. ' cette routine dessine les unités du joueur sur sa map (la map 1) sprite_target_is 1 i=1 for lig=0 to taille-1 for col=0 to taille-1 if (tab_joueur(lig,col)=1) sprite i sprite_file_load i,"submarine.bmp" y=32+(32*lig) x=32+(32*col) sprite_position i,x,y i=i+1 end_if next col next lig nom$="player" return
cree_pc: ' place 1 aléatoirement (un nombre de fois indiqué par "nombre") dans le tableau de map virtuel ' pour le pc i=0 while i<nombre gosub hasard if (tab_pc(caseX,caseY)=1) gosub hasard else tab_pc(caseX,caseY)=1 i=i+1 end_if end_while ' lit le tableau pour afficher sur la map un sprite à la place de 1 lu dans le tableau. ' cette routine n'est appelée qu'en fin de partie pour afficher la map pc sprite_target_is 10 i=i+1 for lig=0 to taille-1 for col=0 to taille-1 if (tab_pc(lig,col)=1) sprite i sprite_file_load i,"submarine.bmp" y=32+(32*lig) x=32+(32*col) sprite_position i,x,y i=i+1 end_if next col next lig nom$="ordi" return
' Affiche le tour du joueur et ses points tour_joueur: caption 3,"Energie : "+str$(energie_joueur) caption 9,"Carte du joueur "+nom$ hide 10 show 1 return
' Affiche le tour du pc et ses points tour_pc: caption 3,"Energie : "+str$(energie_pc) caption 9,"Carte du joueur "+nom$ hide 1 show 10 return
attaque: return
repos: return
bonus: return
' fixe la taille de la map à 5x5 petit: taille=5 dim tab_joueur(5,5) dim tab_pc(5,5) map=192 posX=int(800/2)-int(map/2) left 1,posX top 1,200 width 1,map height 1,map file_load 1,"grille05.bmp" left 10,posX top 10,100 width 10,map height 10,map file_load 10,"grille05.bmp" nombre=3 ' crée la map du joueur gosub cree_joueur ' crée la map du pc gosub cree_pc ' Affiche la map du joueur en cours gosub affiche return
' fixe la taille de la map à 10x10 moyen: taille=10 dim tab_joueur(10,10) dim tab_pc(10,10) map=352 posX=int(800/2)-int(map/2) left 1,posX top 1,100 width 1,map height 1,map file_load 1,"grille10.bmp" nombre=5 gosub affiche return
' fixe la taille de la map à 15x15 grand: taille=15 dim tab_joueur(15,15) dim tab_pc(15,15) map=512 posX=int(800/2)-int(map/2) left 1,posX top 1,30 width 1,map height 1,map file_load 1,"grille15.bmp" nombre=10 gosub affiche return
tests: if scancode=27 then terminate return
' détermine la position aléatoire dans le tableau de map virtuel. hasard: caseY=int(rnd(taille-1)) caseX=int(rnd(taille-1)) return
| |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: un bug je pense, un objet alpha qui pose probleme Dim 12 Déc 2010 - 16:14 | |
| OK je vais finir par m'y faire Merci jack encore une fois tu me sauve ^^ Je vais mettre le timer juste avant le end. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: un bug je pense, un objet alpha qui pose probleme Dim 12 Déc 2010 - 16:41 | |
| Euh,.... c'était Klaus... | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: un bug je pense, un objet alpha qui pose probleme Dim 12 Déc 2010 - 19:22 | |
| Rhalaa, quelle gourde je suis Je savais bien que c'était toi alors va savoir pourquoi j'ai mis jack oO | |
| | | Contenu sponsorisé
| Sujet: Re: un bug je pense, un objet alpha qui pose probleme | |
| |
| | | | un bug je pense, un objet alpha qui pose probleme | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |