Tableau

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Robrock55
Messages : 65
Inscription : lun. 01/févr./2010 17:04
Localisation : Meuse
Contact :

Tableau

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Tableau

Message par Le Soldat Inconnu »

Comme cela :)

Dim Tableau(20, 20)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Tableau

Message 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
Image
Image
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Tableau

Message par Le Soldat Inconnu »

arf, grillé
Et qu'en tu es juste grillé, tu deviens mangeable ou c'est pas encore assez cuit ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Tableau

Message par TazNormand »

suis à point :D
Image
Image
Robrock55
Messages : 65
Inscription : lun. 01/févr./2010 17:04
Localisation : Meuse
Contact :

Re: Tableau

Message par Robrock55 »

Ah tout simplement lol

Merci beaucoup, et juste : incroyable la rapidité d'intervention 8O
Encore merci et bonne journée !

RobRock55
Robrock55
Messages : 65
Inscription : lun. 01/févr./2010 17:04
Localisation : Meuse
Contact :

Re: Tableau

Message par Robrock55 »

Les test tableaux sont-ils possibles ?

Code : Tout sélectionner

If montableau(0,0) = 1
; touché
else
; Dans l'eau
EndIf
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Re: Tableau

Message par Progi1984 »

Testes et tu verras !

Mais la réponse est affirmative !
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Tableau

Message 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"
Robrock55
Messages : 65
Inscription : lun. 01/févr./2010 17:04
Localisation : Meuse
Contact :

Re: Tableau

Message par Robrock55 »

Euh, ca n'a pas fonctionné, je réessaye ce soir et je vous tiens au courant merci :mrgreen:
Robrock55
Messages : 65
Inscription : lun. 01/févr./2010 17:04
Localisation : Meuse
Contact :

Re: Tableau

Message 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 :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Tableau

Message 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)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Tableau

Message 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
;
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Robrock55
Messages : 65
Inscription : lun. 01/févr./2010 17:04
Localisation : Meuse
Contact :

Re: Tableau

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Tableau

Message 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 :)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre