Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Générateur de forêt
cam! le 30/04/2011 à 00:29
Bonjour a tous! Voici un editeur de foret! Ca peut toujours servir.
Cree par un seconde ^^ premiere année de programmation.
Ps: je n'utilise jamais de then et de else.
Code
Effecran
Menu("","JOUER",A,"CREDITS",B,"QUITTER",C)
Lbl C:Stop
Lbl B
output(4,4,"Cam.2011"
For(L,1,200
End
Prgrm"FORET"
LblA
0->R
Menu("","petite foret",D,"grande foret",E
LblD:20->Z
LblE:40->Z
Repeat R=Z
EntAleatoire(1,16)->X
EntAleatoire(1,7)->Y
Output(Y,X,"0
Output(Y+1,X,"I
End
Akmdad le 30/04/2011 à 01:00
hahaha c'est sympa!!!
pour te mettre a l'epreuve, essaie de mettre ca en mode graphique, et fait en sorte qu'on ai d'autres choix ;pPersalteas le 30/04/2011 à 08:34
C'est pas mal ouais, le code pourrait être encore simplifié et amélioré, pas grand chose, mais juste pour les retouches, ça me démange.
Code
Effecr
Lbl 0
Menu("","JOUER",A,"CREDITS",B,"QUITTER",C)
Lbl B
output(4,4,"Cam.2011"
For(Z,1,200:End
Goto 0
LblA
0->R
Menu("","PETITE FORET",D,"GRANDE FORET",E
Lbl E
20
Lbl D
Ans+20
Ans->Z
Repeat R=Z
entAleat(1,16->X
entAleat(1,7->Y
Output(Y,X,"0
Output(Y+1,X,"I
End
Lbl C
EDIT: ouais, non, en fait, ça change rien.
cam! le 30/04/2011 à 10:28
Merci pour vaux reponses. Ca fait plaisir, et ca donne envie de mettre une nouvelle version! +une explication (aux debutants) : pourquoi Entaleatoire(1,7)->Y alors que Y peut aller jusqu'a 8? On verra!
Code
Effecran
Menu("","JOUER",A,"CREDITS",B,"QUITTER",C)
Lbl C:Stop
Lbl B
output(4,4,"Cam.2011.V2"
For(L,1,200
End
Prgrm"FORET"
LblA
0->R
Menu("","petite foret",D,"grande foret",E,"TOUNDRA",F
LblD:20->Z
LblE:40->Z
Repeat R=Z
EntAleatoire(1,16)->X
EntAleatoire(1,7)->Y
EntAleatoire(1,3)->A
If A=1:Output (Y,X,"0
If A=2:Output(Y,X,"O
If A=3:Output(Y,X,"Q
Output(Y+1,X,"I //Y+1=8! Or si Y+1=9,(avec justement Y=8), crash!//
End
LblF
Repeat R=40
EntAleatoire(1,16)->X
EntAleatoire(1,7)->Y
Output(Y,X,"Y
Output(Y+1,X,I
R+1->R
End
cam! le 30/04/2011 à 10:41
Je m'assurais de ne plus mettre 2 posts a la fois...
Nouveaux ajouts!
Combien d'arbres?
Retour au menu! Enfin!
Code
Lbl 0
Effecran
Menu("","JOUER",A,"CREDITS",B,"QUITTER",C)
Lbl C:Stop
Lbl B
output(4,4,"Cam.2011.V3"
For(L,1,200
End
Goto 0
LblA
0->R
Menu("","petite foret",D,"grande foret",E,"TOUNDRA",F
LblD:EntAleatoire(0,20)->Z
LblE:EntAleatoire(20,40)->Z
Repeat R=Z
EntAleatoire(1,16)->X
EntAleatoire(1,6)->Y
EntAleatoire(1,3)->A
If A=1:Output (Y,X,"0
If A=2:Output(Y,X,"O
If A=3:Output(Y,X,"Q
Output(Y+1,X,"I //Y+1=7! Or si Y+1=8,(avec justement Y=7), problème d'affichage!//
End
Output(8,1,"arbres:"
Output(8,8,Z
Output(8,10,"Arbres
Pause
Goto 0
LblF
Repeat R=40
EntAleatoire(1,16)->X
EntAleatoire(1,7)->Y
Output(Y,X,"Y
Output(Y+1,X,I
R+1->R
End
Pause
Goto 0
linkakro le 01/05/2011 à 01:41
Deux erreurs se balladent : le nombre d'arbre toujours suppérieur à 20 et la boucle sans incrément.
J'ai aussi bidouillé des trucs pour réduire le code.
L'affichage de Z gâche tout.
Code
Lbl 0
Effecr
Menu("","JOUER",A,"CREDITS",B,"QUITTER",C)
Lbl B
output(4,4,"Cam.2011.V3"
For(L,1,200
End
Goto 0
Lbl A
1->B
0 //ne l'oubliez pas
Menu("","petite foret",D,"grande foret",E,"TOUNDRA",F
Lbl E:20:Lbl D
entAléat(Ans,20+Ans->Z
DelVar B
Lbl F
For(R,1,Z
EntAleatoire(1,16)->X
EntAleatoire(1,6)->Y
EntAleatoire(1,3)->A
If A=1:Output (Y,X,"0
If A=2:Output(Y,X,"O
If A=3:Output(Y,X,"Q
If B:Output(Y,X,"Y
Output(Y+1,X,"I
End
Output(8,1,"arbres:"
Output(8,8,Z
Pause
Goto 0
Lbl C
cam! le 01/05/2011 à 12:00
Merci et en fait une nouvelle V5 pendant que j'avais un peu de temps!
Ya du sol,
Code
Effecran
Lbl 0
Menu("","JOUER",A,"QUITTER",B
Lbl B : STOP
Lbl A
0->R
Menu("",MiniFORET",D'"GRANNDE FORET",E,"TOUNDRA",F
Lbl D : entAlet(20,40)->T : Goto 1
Lbl F : Goto 2
Lbl1
1->B
1->C
Repeat C=8
Repeat B=16
Output(C,B,".
B+1->B
End
C+1->C
1->B
End
Repeat R=T
EntAleat(1,16)->X
EntAleat(1,6)->Y
Output(Y,X."O
Output(Y+1,X,"I
R+1->R
End
Pause
Goto 0
Lbl2
(Recopier après (version V4).
-----
Cam!
-----
linkakro le 01/05/2011 à 14:06
Tu t'obstines à maintenir des trucs qui ont été déconseillées par deux personnes... Dommage.
Quant à moi j'avais fait 1 erreur.
Code
Lbl 0
EffEcr
output(4,4,"Cam.2011.V7"
Output(5,4,"AVEC LINKAKRO
For(L,1,200
End
Effecr
Menu("","JOUER",A,"QUITTER",C)
Lbl A
1->B
40->T
0 //ne l'oubliez pas
Menu("","MINI FORET",D,"GRANDE FORET",E,"TOUNDRA",F
Lbl E:20:Lbl D
entAléat(Ans,20+Ans->T
DelVar B
Lbl F
For(Y,1,8
For(X,1,16
Output(Y,X,".
End
End
For(R,1,T
EntAleatoire(1,16)->X
EntAleatoire(1,7)->Y
EntAleatoire(1,3)->A
Output (Y,X,"0
If B
Output(Y,X,"Y
Output(Y+1,X,"I
End
Pause
Goto 0
Lbl C
cam! le 02/05/2011 à 18:46
Nan man! Au contraire, ca me sert beaucoup! (Je rappelle
Que c'est ma toute premiere anne de programmation).
Par ailleur,pour le sol, bah la boucle j'ai GALERE a la faire!
Et toi, tu la fais en quoi, 2 lignes!
Eh bah je te dit merci et c'est bien d'aider.
Certes ce programme sert (a rien) mais c'est amusant de s'entrainer.
Par ailleurs, j'ai fais un curseur en forme de plus "+" mais je sais le deplacer,
Mais comment faire pour suprimer sa position d'avant sans effacer les arbres/sol ??

linkakro le 02/05/2011 à 21:58
Si tu te contentes d'écrire des points dans ton sillon, les arbres disparaîtront...
Il faudrait stocker les coordonnées des arbres MAIS c'est lourd.
Une des solutions est la matrice. C'est un tableau dont on bidouille chaque case en les sélectionnant sous la forme [A](Y,X). Mais attention à sa taille qui doit être définie à l'avance.
A chaque fois que tu crées un aléatoire, rempli la case de la matrice qui correspond à ces coordonnées.
Lorsque ton personnage quitte une case, verrifie si la case est remplie pour savoir s'il y a un arbre. Nous pouvons même utiliser plusieurs valeurs selon le type d'arbre que tu croises.
Au début :
Code
EffVar [A]
{8,16}->dim([A] // la matrice est remplie de 0. Tu devras la remplir de 1.
Lors de la création de la forêt :
Code
entAléat(1,16)->X
entAléat(1,7)->Y
1+B->[A](Y,X) // 1 pour un arbre normal et 2 pour la toundra
3->[A](Y+1,X) // pour le tronc des arbres
Lors de tes déplacements :
Code
[A](Y,X) // stocke la valeur de la case dans Answer (ça évite de l'écrire à chaque fois)
If Ans=1:Output(Y,X,"O
If Ans=2:Output(Y,X,"Y
If Ans=3:Output(Y,X,"I
Des fonctions sont valides à la fois pour les listes et les matrices. Regarde dans les menus idouanes(adéquats).
Notamment : Remplir(0,[A])
=====
J'espère que tu as compris tout ce que nous t'avons montré jusqu'à présent.
Notamment le For qui est incontournable et le coup des labels du menu.
Les restituer ailleurs serait un beau cadeau à me faire.
Edit : j'ai ajoûté des indications sur le lieu d'application de ces fragments de code.
Rowks le 08/05/2011 à 16:15
Merci Camille !
J'ai réussi à le faire
Ton voisin d'classe ^^'cam! le 15/05/2011 à 20:17
Je suis en train de booser dessus! Je m'excuses, mais durant tout ce temps, et oui, j'etais bombe de
Travail! ...tient d'ailleurs je le suis toujours! ^^/
Je vais essayer d'en mettre une prochainement, en utilisant les matrices.
1 ou 2 jours d'attentes. Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.