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 :D

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 8O
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 ?

Code : Tout sélectionner

If montableau(0,0) = 1
; touché
else
; Dans l'eau
EndIf

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 :mrgreen:

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 :)