Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Jeu Stargate SG1
82statsfr le 27/07/2013 à 18:47
Bonjour,
je suis en train de créer un jeu "stargate SG1"
Ce qui est prévu :
-choix entre : Teal'c, Jack, Jonas, Samantha, daniel, et le général Hammond.
-les missions se succèdent et quand vous en avez fini une, vous pouvez retourner sur la planète lorsque vous êtes à la base.
-26 planètes différentes.
-Teal'c a une arme différente.
-Lorsque vous êtes le général vous n'allez pas sur les planètes mais vous commandez les opérations de la base.
-Lorsque vous êtes Daniel vous n'allez pas sur les planètes, vous êtes au "cieux" et vous pouvez utilisez des machines (pour modifier l'ADN,...)
En ce momoent :
-intro
-Choix entre Teal'c, Jack, Jonas, Samantha, Daniel et le général Hammondm@thieu41 le 27/07/2013 à 19:43
Bonjour!
Bienvenue sur le fofo

Si tu as besoin d'aide ou que tu veux des conseils, n'hésites pas à poster ton code ou à nous poser des questions!
rpgcreator le 27/07/2013 à 19:45
Jespere que ca sera le meme jeu, car tous ceux que j'ai vus sur le forum com sa qui sont ambitieux, ca n'aboutit pas...m@thieu41 le 27/07/2013 à 19:55
C'est sur qu'il vaut mieux commencer par des jeux plus "simple", ou du moins plus rapides à réaliser, comme un snake, morpion ou autre, comme ça on voit vraiment le résultat de notre travail et c'est plus motivant, comme ça on a plus de chance d'arriver au bout

Et ensuite on peut augmenter la complexité des programme ^^
rpgcreator le 28/07/2013 à 11:26
C'est comme moi avec skyrim: la premiere version affichait 6 lignes de texte, avait deux attaques et c'etait assez facile!! Il ne pesait aussi que 800 octets... maintenant, c'est sur que c'est pas du tout la meme chose: c'est maintenant un monstre de 9700 octets, ave trois modes de jeu, 6 attaques differentes, et maintenant un generateur de maps: ca fonctionne comme dans pokemon!!

et pour ainsi dire, comme mattieu41 l'a dit, le resultat t'impressionne et tu le trouve meilleur que bo2(maintenant, faut peut etre faire gaffe

) mais bon, t'es dans tous les cas tres fier de toi si ca marche bien et que ca bugge pas comme les progs mal recopies

82statsfr le 28/07/2013 à 13:39
Tous les jours, je posterai l'avancement du projet.
le 28/07/13
ce qui est fait a 100% :
-choix du perso
-intro
Ce qui est en train de se faire :
-mission 1
PS : ce je posterai le début du programme demain.

Il risque d'être très long au total.

linkakro le 28/07/2013 à 15:27
Je te conseille tout de suite d'éditer un seul message de mise à jour en précisant les dâtes. (sauf peut-être pour les codes)
Tu n'es pas obligé de poster toutes les versions de code bien sûr.
Bonne chance pour finir le programme.

Toute aide demandée doit être satisfaite.
82statsfr le 29/07/2013 à 09:47
Aujourd'hui :
-comme hier

-si Jack est au lv 1 il peur aller sur la planète 1. lv 2 : planète 2 ... lv 26 : planète 26
Je poste l'intro (si on peux appeler sa comme sa ) car il risque d'y avoir des modifications après.
Les "L" s'obtiennent en faisant [2nde]+[liste (stat)]+[>]+[B]
Dans un autre programme il faut mettre :
Dans le "vrai" programme :
Code
EffEcr
Output(1,1,"star
Output(2,1,"gate
Output(1,8,"x
Output(2,7,"x x
Output(3,6,"x x //3 espaces
Output(4,5,"x sg1 x
Output(5,5,"x x //5 espaces
Output(6,6,"x x //3 espaces
Output(7,7,"x x
Output(8,8,"x
Pause
EffEcr
m@thieu41 le 29/07/2013 à 10:41
Je ne vois pas trop à quoi va te servir l'autre programme où il n'y a que {0->LA...
Tu peux optimiser le code avec des boucles for(
Code
EffEcr
Output(1,1,"star
Output(2,1,"gate
Output(4,7,"sg1
For(A,0,3
For(B,-1,1,2
Output(A+1,8-BA,"X
Output(8-A,8-BA,"X
End
End
Pause
EffEcr
Tu peux même obtenir un certain effet d'ouverture en introduisant un délai dans les boucles

82statsfr le 29/07/2013 à 11:22
Le programme avec {0}->La doit etre ouvert avant de lancer le jeu.
Voila en gros comment va se présenter le reste (pour que si c'est la première fois qu'on lance le prgm il y ai un truc spécial) :
Code
=/= différent
Lbl 0
La(1)->z
If z=0:Goto m
If La(1)=/=z:z->La(1)
End
Lbl m
...
z+1->z
Goto 0
End
m@thieu41 le 29/07/2013 à 12:28
Je ne suis pas convaincu par ta façon de faire... Je m'explique:
Au cas où c'est la première fois qu'on lance le jeu, à l'instruction La(1->Z, tu vas bien stocker 0 dans Z
Après le If, on va donc aller au Lbl M
Là, Tu effectues les actions que tu veux ne faire qu'une fois au début, puis tu incrémentes Z (Z=1), avant de retourner au Lbl 0 (d'ailleurs le End qui suit ne sert strictement à rien je ne vois pas pourquoi tu l'as mis... ?)
Au Lbl 0 la première instruction qu'il y a c'est LA(1->Z... Or, LA(1 vaut toujours 0 à ce moment, donc Z va valoir 0 après cette instruction...
Au test Z=0, on va donc retourner au Lbl M... et ainsi de suite indéfiniment...
Il y a une autre astuce qui consiste à fixer la taille de la liste au début du prgm. Ainsi, si elle existe déjà, elle est créée avec la taille demandée, et remplie de 0. sinon il ne se passe rien (où sa taille change si elle n'était pas celle demandée). Ainsi, tu peux même te servir d'autres termes de la liste pour stocker des données (comme le lvl du joueur par ex )
Ex:
Code
2->dim(LA // Voire explications plus haut (le deuxième terme servira pour le lvl par ex)
If non(LA(1 // Revient à faire If 0=LA(1
Then
//Actions si on joue pour la première fois
1->LA(1 //On sauvegarde le fait qu'on a déjà joué
1->LA(2 //On est on Lvl 1 au début (note: on pourrait stocker le Lvl dans LA(1 et simplement tester comme avant If non(LA(1 puisque le Lvl ne sera jamais nul sauf quand on ne l'a pas encore initialisé
End
//Actions normales
If condition pour passer au Lvl suivant
1+LA(2->LA(2
...
Là ça devrait marcher, et pas besoin d'un autre prgm en plus!
--------------
Quelques conseils d'optimisations à partir de ton code:
Code
=/= différent
Lbl 0
La(1)->z
//Équivaut à:
LA(1->Z
//explication: inutile de fermer les parenthèses/guillemets/accolades/crochets devant un retour à la ligne ou un sto (->)
If z=0:Goto m
//Equivaut à:
If non(Z
Goto M
//explication: non(Z) renvoi vrai (1) si Z=0 et faux (0) sinon
//Mettre à la ligne le Goto M permet de ne pas fermer la parenthèse, et c'est plus lisible
If La(1)=/=z:z->La(1)
//Tu peux remplacer par:
Z->LA(1
//explication: Inutile de tester quoi que ce soit, puisqu'à la fin de ces 2 instructions on a forcément Z=LA(1
End //Qu'est ce que c'est que ce End?
//Un End se met: Après une boucle (For/While/Repeat) ou l'instruction If quand elle est suivie de End, pour indiquer la fin de ces instructions, elle ne signifie pas fin du prgm! (qui correspond à Stop/Return)
Lbl m
...
z+1->z //Ici on a forcément Z=0 puis après Z=1 donc tu peux remplacer par:
1->Z
Goto 0
End //Pareil que pour l'autre End ...
pour plus de conseils d'optimisation, va voir ici:
https://tout82.forumactif.org/[...]-l-optimisation
Bonne chance pour la suite

82statsfr le 29/07/2013 à 16:44
Merci Mathieu45 j'ai effectivement fiat une erreur j'ai inversé 2 lignes
ça donne :
Code
If La(1)=/=z:z->La(1)
La(1)->z
If z=0:Goto m
Au fait dans le deuxième prgm il y aura pas que La (La=Jack)

m@thieu41 le 29/07/2013 à 17:51
Tu veux dire que ça fait:
Code
Lbl 0
If La(1)=/=z:z->La(1)
La(1)->z
If z=0:Goto m
...
Lbl m
...
z+1->z
Goto 0
Dans ce cas comme je t'ai dis
Code
If La(1)=/=z:z->La(1)
ça revient à faire
Donc la ligne qui suit devient inutile:
Code
Lbl 0
z->La(1)
//La(1)->z est inutile puisqu'on a déjà stocké Z dans LA(1
If z=0:Goto m //Malheureusement du coup tu teste la valeur de Z avant d'avoir lancé le prgm, et non LA(1
...
Lbl m
...
z+1->z
Goto 0
En fait, ce qu'il aurait fallu que tu fasses c'est:
Code
Lbl 0
If non(LA(1
Goto m
... //Code principal si on a déjà joué
Lbl m
...
1->LA(1
Goto 0
Même pas besoin d'utiliser Z en fait ^^
Néanmoins, la technique que je t'ai indiqué dans mon précédent message conviendrait bien mieux, et permettrai d'éviter que l'utilisateur ait à lancer un autre prgm la première fois, ce qui n'est pas pratique du tout... plus de précisions [url=]ici[/url], mon article tout frai

, chap 2.
82statsfr le 30/07/2013 à 10:17
le 30 Juillet
Comme hier
Si carter est lv 1 elle peut aller sur la planète 1 ... [70 %]
Planète 1A [60 %]
PS : demain je ne pourrai pas beaucoup avancer sur le prgm : CE SERA MON ANNIV.
Donnez vos idées ça peut m'aider.
(Pour m@thieu41 : je vais poster le bon code)
82statsfr le 30/07/2013 à 10:24
Correction de mon code (encore)(ne le mettez pas encore sur votre calto)
2->dim(La
If non(La(1
Then
... //action de la 1ere fois où on joue
1->La(1
1->La(2
End
PS je mettrai un peu de temps avant de poster le début du code : des modifs à fairem@thieu41 le 30/07/2013 à 10:56
82statsfr a écrit :
Donnez vos idées ça peut m'aider.
Tu veux des idées pour faire quoi en fait? (quel aspect du programme je veux dire)
linkakro le 30/07/2013 à 13:46
Bien, ça avance et se corrige. m@thieu41 tu fais tout sans moi !
Si ta liste ne sera pas plus longue, tu peux remplir avec un des codes suivants dans ton alternative.
Code
2->dim(La
If non(La(1
Then
... //action de la 1ere fois où (
) on joue
Fill(1,lA) // ou bien {1,1->A
End
Retenez que j'ai ommis le "l" de {1,1->A parce que ça marche. La TI devine que c'est un nom de liste.
82statsfr le 30/07/2013 à 19:51
En réponse à M@thieu41 :
Donnez des morceau de code ça pourrais optimiser mon prgm (comme des meilleurs score par exemple )m@thieu41 le 30/07/2013 à 20:46
Le plus simple serait que tu mettes toi se que tu as codé et nous on te dis ce qu'il y a à optimiser, au moins ça te permet de progresser (sinon on peut te faire tout le code mais je ne vois pas l’intérêt

). Un peu comme on a fait pour la gestion d'un premier lancement de jeu ^^
82statsfr le 02/08/2013 à 13:27
02/08/13
-Suppression du 2eme prgm
-Pour la V1 il n'y aura que 10 planète.
Aucun autres changement majeur, j'ai juste un peu réduit le code à certains endroits.82statsfr le 04/08/2013 à 10:05
bjr, j'ai un problème: lorsque on se déplace, le"O" se s'efface pas :
=< inférieur ou égal à
=> supérieur ou égal à
Code
Lbl 0
8->p:8->o
EffEcr
While 1=1
Output(1,1,"x x" //14 espaces
Output(8,1,"x x" //14 espaces
Output(4,7,"xxx
codeTouche->x
If x=24
o-1->o
If x=26
o+1->o
If x=25
p-1->p
If x=34
p+1->p
If p>7:7->p
If p<2:2->p
If o>15:15->o
If o<2:2->o
Output(p,o," "
Output(p,o,"o"
end
aidez moi svp
m@thieu41 le 04/08/2013 à 12:55
Le prochaine fois essaye de respecter la casse (majuscules/minuscules) dans ton code stp
-----------
Déjà:
While 1=1
Peut être remplacé par While 1
-----------
Concernant ton problème: C'est normal que le "O" ne s'efface pas:
Tu calcules les nouvelles coordonnées
Tu affiches un espace aux nouvelles coordonnées
Puis tu affiches le "O" aux nouvelles coordonnées!
Donc tu n'affiches jamais rien aux anciennes coordonnées!
Voici un code qui devrait marcher et faire ce que tu veux:
Code
Lbl 0
8->P
8->O
EffEcr
While 1
Output(1,1,"x x //guillemets fermantes inutiles
Output(8,1,"x x //idem
Output(4,7,"xxx
codeTouche->X
O-(X=24)+(X=26->Q //Si tu ne connais pas les booléens va voir ici: https://tout82.pages-perso.free.fr/forum/sujet.php?sujet=2741
P-(X=25)+(X=34->R
max(2,min(7,R->R //Explication et optimisation possible plus bas
max(2,min(15,Q->Q
If P!=R ou O!=Q //Que si on s'est déplacé (permet d'éviter un clignotement)
Then
Output(P,O," //On efface aux anciennes coordonnées
R->P //On charge les nouvelles coordonnées
Q->O
Output(P,O,"O //On affiche aux nouvelles coordonnées
End
End //Fin de la boucle While
Explication pour le max(2,min(7,R
Lorsqu'elle prend en argument 2 entiers, la fonction max renvoi le plus grand des 2, et la fonction min le plus petit.
Ainsi, quand tu fait min(7,R), si R est supérieur à 7, elle renvoi 7, et sinon R.
Quand on fait max(2,min(7,R)):
Si R>7
min(7,R) renvoi 7
max(2,7) renvoi 7 et c'est ce qu'on voulait
Si R<2
min(7,R) renvoi R
max(2,R) renvoi 2 et c'est ce qu'on voulait
Si 2<=R<=7
min(7,R) renvoi R
max(2,7) renvoi R et c'est ce qu'on voulait
Tu peux aussi directement faire:
Code
max(2,min(7,P-(X=25)+(X=34->R
max(2,min(15,O-(X=24)+(X=26->Q
82statsfr le 04/08/2013 à 16:41
ok merci je vais éssayer82statsfr le 05/08/2013 à 13:52
maintenant je ne peux plus me déplacerm@thieu41 le 05/08/2013 à 18:37
Tu es sur d'avoir bien recopié?
Parce que ça marche sur émulateur...
Image manquante
82statsfr le 16/08/2013 à 13:56
oui j'ai vérifié,
peut-être que j'ai déjà utilisé ces variables ? Je vais vérifierm@thieu41 le 16/08/2013 à 22:59
Le fait que tu ais déjà utilisé ces variables ne peut rien changer à quoi que ce soit...
Tu t'es forcément trompé quelque part (0 à la place de O, ou quelque chose du style peut être...)
Relis bien le code et vérifie par rapport à ma capture d'écran parce que ça ne peut pas ne pas marcher si ça marche sur ému Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.