Poster un nouveau sujet Poster une réponse
Chakal37
Auteur Message
chakal37



Autorisation : Membre
Nb de messages : 18
Inscrit le : Sam 18 Oct 2008, 11:38
Posté le : Lun 10 Nov 2008, 20:46   Citer 

J'ai donner mon nom pour ce sujet car j'ai énormément de question vu que j'essai de creer un prototype de jeu ^^

-Ce code je l'a trouver sur le site du zéro et ça ma donner une iddée de jeu happy.gif


Code
:ClrHome
:1->X:1->Y
:1->A:1->B
:Repeat K=105
:Output(A,B," "
:Output(Y,X,"+"
:Y->A:X->B     
:getKey->K
:If K=24:X-1->X
:If K=26:X+1->X
:If K=25:Y-1->Y
:If K=34:Y+1->Y
:If X=0:1->X
:If X=17:16->X
:If Y=0:1->Y
:If Y=9:8->Y
:End



J'aimerer que en appyent sur 0 on change de page, que ça affige un texte puis on revient sur la page précédente sauf que la on avance de 2 cases (le probléme c'est que je veux revenir pile a l'endroit ou on été avant d'appuyer sur 0 ...

J'ai créer ce code mais il ne fonctionne pas... (je me déplace toujours a 1 case et le texte ne s'évace pas crazy.gif .



Code
:ClrHome
:1->X:1->Y
:1->A:1->B
:Repeat K=105
:Output(A,B," "
:Output(Y,X,"+"
:Y->A:X->B     
:getKey->K
:If K=24:X-1->X
:If K=26:X+1->X
:If K=25:Y-1->Y
:If K=34:Y+1->Y
:If X=0:1->X
:If X=17:16->X
:If Y=0:1->Y
:If Y=9:8->Y
:If K=102:goto 3
:lbl 3
:ClrHome
:Disp "TEXTE"
:Repeat G=105
:Output(C,D,"+"
:Y->C:X->D
:getKey->G
:If G=24:D-2->D
:If G=25:C-2->C
:If G=26:D+2->D
:If G=34:C-2->C
:End



 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
coc5
Avatar

Autorisation : Membre
Nb de messages : 879
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Mar 11 Nov 2008, 0:22   Citer 

Déjà le code de base est améliorable.


Code
:ClrHome
:1->X:1->Y
:Repeat K=105 
:Output(Y,X,"[un espace]
:min(16,max(1,X-(K=24)+(K=26->X
:min(8,max(1,Y+(K=34)-(Y=25->Y
:Output(Y,X,"+
:Repeat K:getKey->K:End
:[le code supplémentaire]
:End


C'est la même chose en mieux en plus court winkle.gif

Sinon, c'est bien d'avoir essayé mais ce n'est pas la bonne manière d'aborder ce prototype.

Résumons, tu veux que quand on appuie sur 0 :
- Le vitesse de mouvement change. (durable)
- On affiche un texte. (instantané)

Pour la vitesse, tu dois créer une variable (T par exemple), qui t'indiqueras si tu es en mode normale (1) ou en mode accéléré (2). Appuyer sur 0 fera donc changer cette variable de 1 vers 2 ou de 2 vers 1:


Code
:If K=95:Then
:1 + (T=1 -> T
:End



Tu veux également afficher un texte. N'utilise pas Disp car il décale tout l'écran d'un cran (d'où le changement de position de ton personnage).
Préfère Output(). Pour l'effacer tu dois refaire un Output() au même endroit avec le même nombre d'espaces:


Code

:If K=95:Then
:1 + (T=1 -> T
:Output(4,3,"CHANGEMENT
:Output(5,4,"DE MODE
:Pause
:Output(4,3,"[10 espaces]
:Output(5,4,"[7 espaces]
:End



Il ne reste plus qu'à initialiser T au début du code (1->T) et à modifier les modificateurs de X et Y selon que T est à 1 ou à 2.

Donc :

Code
:ClrHome
:1->X:1->Y:1->T
:Repeat K=105 
:Output(Y,X,"[un espace]
:min(16,max(1,X-T(K=24)+T(K=26->X
:min(8,max(1,Y+T(K=34)-T(Y=25->Y
:Output(Y,X,"+
:Repeat K:getKey->K:End
:If K=95:Then
:1 + (T=1 -> T
:Output(4,3,"CHANGEMENT
:Output(5,4,"DE MODE
:Pause
:Output(4,3,"[10 espaces]
:Output(5,4,"[7 espaces]
:End
:End



Où agit la variable T ? Regarde vers les X et Y.

Un exemple: L'utilisateur appuie sur haut en mode accéléré . K est donc égal à 25 et T est égal à 2.
On a donc Y - 2x(K=25) -> Y

N'hésite pas à me poser des questions si je n'ai pas été clair sur certains points.



Ps: min() et max() s'occupent de "rabattre" les valeurs de X et de Y entre respectivement 1 et 16 et 1 et 8 (dans l'écran quoi).

 Adresse email Haut de page Bas de page 
 
chakal37



Autorisation : Membre
Nb de messages : 18
Inscrit le : Sam 18 Oct 2008, 11:38
Posté le : Mar 11 Nov 2008, 15:14   Citer 

Ca me parait bien expliquer mais le code base que tu a améliorer, je ne le comprend pas a cause de min et max (même avec ton ps), du coup je ne comprend le code que tu me donne a la fin crazy.gif

 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 879
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Mar 11 Nov 2008, 16:07   Citer 

"min(5,2)" te donneras 2, la valeur minimal. Idem avec max().
En fait tu n'es pas obliger de comprendre, il faut juste que tu sache que ça remplace les "If X=0:1->X" etc... (en mieux car en cas de mode accéléré tu pourrais passer de X=1 à X=-1 et là ça buguerait)
Et X+(K=26)-(K=24->X simplifie également les choses. Des égalités entre parenthèse renvoient 1 si c'est vrai et 0 si c'est faux. Donc on ajoute 1 si K=26 et on retire 1 si K=24 winkle.gif

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes