Page 1 sur 2
Tableau
Publié : lun. 01/févr./2010 17:12
par Robrock55
Bonjour !
Je suis en train d'apprendre le PureBasic et j'ai entrepris de faire une petite bataille navale.
Mon idée :
-un tableau de 20*20 (par exemple) si il n'y a rien j'y stocke 0, si il y a un bateau, 1.
-si l'utilisateur tire, j'augmente la valeur de 10, si une valeur de tableau est = ou supérieure à 10 le joueur à déjà tiré.
Le soucis, c'est que je me rends compte que les tableaux appelés par la fonction Dim ne sont en réalité que des listes !!
Existe-t-il des tableaux en deux dimensions ?
Merci d'avance
RobRock55
Re: Tableau
Publié : lun. 01/févr./2010 17:14
par Le Soldat Inconnu
Comme cela
Dim Tableau(20, 20)
Re: Tableau
Publié : lun. 01/févr./2010 17:16
par TazNormand
Salut
un tableau en 2 dimensions se "taille" de cette façon :
Dim tableau.type(dim1,dim2)
bienvenu dans PureBasic en tout cas
Edit :
arf, grillé par LSI
Re: Tableau
Publié : lun. 01/févr./2010 17:19
par Le Soldat Inconnu
arf, grillé
Et qu'en tu es juste grillé, tu deviens mangeable ou c'est pas encore assez cuit ?
Re: Tableau
Publié : lun. 01/févr./2010 17:23
par TazNormand
suis à point

Re: Tableau
Publié : lun. 01/févr./2010 17:25
par Robrock55
Ah tout simplement lol
Merci beaucoup, et juste : incroyable la rapidité d'intervention
Encore merci et bonne journée !
RobRock55
Re: Tableau
Publié : lun. 01/févr./2010 18:31
par Robrock55
Les test tableaux sont-ils possibles ?
Re: Tableau
Publié : lun. 01/févr./2010 18:44
par Progi1984
Testes et tu verras !
Mais la réponse est affirmative !
Re: Tableau
Publié : mar. 02/févr./2010 2:58
par Geo Trouvpatou
Salut.
Code : Tout sélectionner
Dim montableau.i(20, 20)
montableau(0, 0) = 1 ; Valeur aux coordonnées x=0 y=0
If montableau(0, 0) = 1
Debug "Touché"
Else
Debug "Dans l'eau"
EndIf
Il faut que dans le menu "
Débogueur -> Utiliser le débogueur" ce soit coché.
Et tu verras soit : "Touché" ou "Dans l'eau"
Re: Tableau
Publié : mar. 02/févr./2010 14:56
par Robrock55
Euh, ca n'a pas fonctionné, je réessaye ce soir et je vous tiens au courant merci

Re: Tableau
Publié : mar. 02/févr./2010 20:15
par Robrock55
Bon le test tableau marche, mais j'ai un problème dans mon code :
Code : Tout sélectionner
;*********************
;***Bataille navale***
;*********************
;Initialisation des variables
IDgagdget = 0
#Taille = 100
;Initialisation du tableau qui correspond à la grille de jeu
Dim grille_de_jeu_ennemie.b(2,2)
;Placement des bateaux (pour test)
grille_de_jeu_ennemie(1,1) = 1
OpenWindow(1,0,0,230,230,"Champ de bataille",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
;Création des gadgets
ButtonGadget(1,10,10,#Taille,#Taille,"A : 0")
ButtonGadget(2,20+#Taille,10,#Taille,#taille,"B : 0")
ButtonGadget(3,10,20+#Taille,#Taille,#Taille,"A : 1")
ButtonGadget(4,20+#Taille,20+#Taille,#Taille,#Taille,"B : 1")
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
IDgagdget = EventGadget()
EndIf
If IDgadget = 1
If grille_de_jeu_ennemie(0,0) = 1
MessageRequester("Résultat","Touché")
Else
MessageRequester("Résultat","Dans l'eau !")
EndIf
EndIf
If Idgadget = 2
EndIf
If IDgadget = 3
EndIf
If IDgadget = 4
EndIf
Until event = #PB_Event_CloseWindow
CloseWindow(1)
Et je n'ai aucun message !!
Je suppose que c'est normal, si vous pourriez me dire pourquoi je vous en serai reconnaissant

Re: Tableau
Publié : mar. 02/févr./2010 21:12
par Le Soldat Inconnu
Faute de frappe, tu as écris IDgagdget au lieu de IDgadget ligne 34
Mais il n'y a pas que cette erreur
Quand tu cliques sur le bouton 1, après tu as le message en boucle car IDgadget reste égale à 1, il faut que tu le remette à 0 à chaque tour de boucle
alors je change un peu l'écriture, c'est plus classique comme cela :
Code : Tout sélectionner
;*********************
;***Bataille navale***
;*********************
;Initialisation des variables
IDgagdget = 0
#Taille = 100
;Initialisation du tableau qui correspond à la grille de jeu
Dim grille_de_jeu_ennemie.b(2,2)
;Placement des bateaux (pour test)
grille_de_jeu_ennemie(1,1) = 1
OpenWindow(1,0,0,230,230,"Champ de bataille",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
;Création des gadgets
ButtonGadget(1,10,10,#Taille,#Taille,"A : 0")
ButtonGadget(2,20+#Taille,10,#Taille,#Taille,"B : 0")
ButtonGadget(3,10,20+#Taille,#Taille,#Taille,"A : 1")
ButtonGadget(4,20+#Taille,20+#Taille,#Taille,#Taille,"B : 1")
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
If grille_de_jeu_ennemie(0,0) = 1
MessageRequester("Résultat","Touché")
Else
MessageRequester("Résultat","Dans l'eau !")
EndIf
Case 2
Case 3
Case 4
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow
CloseWindow(1)
Re: Tableau
Publié : mar. 02/févr./2010 21:13
par Ar-S
Essaye avec les "case", je trouve ça plus lisible
Code : Tout sélectionner
;*********************
;***Bataille navale***
;*********************
;Initialisation des variables
IDgagdget = 0
#Taille = 100
;Initialisation du tableau qui correspond à la grille de jeu
Dim grille_de_jeu_ennemie.b(2,2)
;Placement des bateaux (pour test)
grille_de_jeu_ennemie(1,1) = 1
OpenWindow(1,0,0,230,230,"Champ de bataille",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
;Création des gadgets
ButtonGadget(1,10,10,#Taille,#Taille,"A : 0")
ButtonGadget(2,20+#Taille,10,#Taille,#Taille,"B : 1")
ButtonGadget(3,10,20+#Taille,#Taille,#Taille,"A : 1")
ButtonGadget(4,20+#Taille,20+#Taille,#Taille,#Taille,"B : 0")
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 1
If grille_de_jeu_ennemie(0,0) = 1
MessageRequester("Résultat","Touché")
Else
MessageRequester("Résultat","Dans l'eau !")
EndIf
Case 2
If grille_de_jeu_ennemie(1,1) = 1
MessageRequester("Résultat","Touché")
Else
MessageRequester("Résultat","Dans l'eau !")
EndIf
Case 3
Case 4
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case 1
CloseWindow(1)
Break
EndSelect
EndSelect
ForEver
;
Re: Tableau
Publié : mar. 02/févr./2010 21:15
par Robrock55
Corrigé, mais le problème n'est pas là !! Il ne fait pas le MessageRequester()
EDIT : euh connais pas les cases ^^ Vais jeter un coup d'oeil dans l'aide de l'IDE
Re: Tableau
Publié : mar. 02/févr./2010 21:16
par Le Soldat Inconnu
AR-S : tss, juste après moi, je poste et quand je visualise, et il y a ton message juste après, grillé pour un poil de c ....
Regarde ma réponse plus haut
