Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Mar 14 Avr 2009, 19:48
Bonjour à tous !
Tout le monde connaît pong (enfin, j'espère), premier jeu vidéo, et donc, jeu mythique !
J'ai donc programmé un petit pong pour deux joueur sur calculatrice, mais, vu que il doit déjà y avoir une version sur le forum, j'ai également fait une version un joueur et je me suis inspiré du code pour faire un genre de casse-brique... Pong classique (2 joueurs)
Le pong classique se joue avec les touches :
-[math] et [x2](x carré) pour le joueur 1
-[annul] et [/](diviser) pour le joueur 2
voici le code :
Code
0->G:0->H
Lbl 0
0->B:0->C
4->S:4->T:8->X
randInt(2,7->Y
randInt(0,1->B
If B=0:(-)1->B
randInt(0,1->C
If C=0:(-)1->C
ClrHome
Output(Y,X,"*
Output(4,1,G
Output(4,15,H
Pause
Lbl 1
Output(S,1,"]
Output(T,16,"[
Output(Y,X,"*
If Y=1 or Y=8:(-)C->C
If X=16:Then
G+1->G:Goto 0
End
If X=1:Then
H+1->H:Goto 0
End
If X=15 and Y[superieur ou egal]T-1 and Y[inferieur ou egal]T+1 or X=2 and Y[superieur ou egal]S-1 and Y[inferieur ou egal]S+1
(-)B->B
getKey->K
If K[different de]0:Then
If K=41 and S[different de]1:S-1->S
If K=61 and S[different de]8:S+1->S
If K=45 and T[different de]1:T-1->T
If K=65 and T[different de]8:T+1->T
End
Y+C->Y:X+B->X
ClrHome
Goto 1
Pong un joueur
Le pong un joueur se joue avec les flèches haut et bas, et on gagne un point à chaque fois que la balle touche la "raquette".
Il y a a trois mode : Facile, Normal, et Difficile
Dans le mode Facile, la raquette peut renvoyer la balle sur 3 cases (comme dans le mode 2 joueurs), et la proximité du "mur" augmente avec les modes.
Voici le code :
Code
Menu("PONGONE","FACILE",11,"NORMAL",12,"DIFFICILE'",13
Lbl 11:1->N
14->F:Goto 14
Lbl 12:0->N
11->F:Goto 14
Lbl 13:0->N
8->F:Lbl 14
0->R:0->P
Lbl 0
0->B:0->C
4->S:F-1->X:(-)1->B
If R=10:Then
Output(4,4,"FINI !!!
Output(5,2,"POINTS :
Output(5,12,P
Pause :Stop
End
R+1->R
randInt(2,7->Y
While C=0
randInt((-)1,1->C:End
ClrHome
Output(2,4,"ROUND
Output(2,11,R
Output(3,2,"POINTS :
Output(3,12,P
Pause
Lbl 1
Output(S,1,"]
Output(Y,X,"*
If Y=1 or Y=8:(-)C->C
If X=1:Goto 0
If X=2 and Y[superieur ou egal]S-N and Y[inferieur ou egal]S+N or X=F:Then
(-)B->B:P+(abs(N-2))/2->P:End
getKey->K
If K[different de]0:Then
If K=25 and S[different de]1:S-1->S
If K=34 and S[different de]8:S+1->S
End
Y+C->Y:X+B->X
ClrHome
Goto 1
Le "Casse-brique"
Non, je n'ai pas vraiment fait un casse-brique sur calculatrice, ou presque...
En vérité, il n'y a qu'une seule brique... En mettre une dizaine serait beaucoup trop pour la pauvre ram de la calculatrice et le jeu ramerait beaucoup trop pour que ce soit jouable.
Néanmoins, le casse-brique comporte un souci, la balle a une trajectoire fixe, et, même si elle rebondit contre la raquette et contre les murs, il peut arriver qu'elle fasse une boucle et continue de rebondir sans jamais toucher la "brique". La seule solution est donc de se suicider en laissant tomber la balle dans le trou.
Voici tout de même le code :
Code
0->A
4->V:3->O:8->N
Lbl 0
0->B:0->C
randInt(1,5)->O:randInt(1,16)->N
7->S:2->Y:(-)1->B
If V=0:Then
ClrHome
Output(4,4,"PERDU
Pause :ClrHome
Stop:End
V-1->V
randInt(2,7->X
While C=0
randInt((-)1,1->C:End
ClrHome
Output(2,4,"VIES :
Output(2,12,V
Pause
Lbl 1
Output(8,S,"---
Output(Y,X,"*
Output(O,N,"0
If X=1 or X=16:(-)C->C
If Y=O and X=N
Then
ClrHome
Output(4,4,"OUAIS !
A+1->A
Output(5,2,"POINTS :
V+2->V
Output(5,12,A
Pause :Goto 0
End
If Y=8:Goto 0
If Y=7 and X[superieur ou egal]S and X[inferieur ou egal]S+3 or Y=1
(-)B->B
getKey->K
If K[Different de]0:Then
If K=24 and S[Different de]1:S-2->S
If K=26 and S[Different de]13:S+2->S
End
X+C->X:Y+B->Y
ClrHome
Goto 1
Autorisation : Membre
Nb de messages : 81
Inscrit le : Lun 15 Sep 2008, 17:13
Posté le : Lun 04 Mai 2009, 17:32
Salut, ça fait un petit moment que j'essaye de faire un cassebrique
J'avais trouvé une méthode mais elle était bien trop longue :
En fait il y avez 4 boucles :
une avec le déplacement + x et + y
une avec le déplacement + x et - y etc...
Le probléme s'est que c'est très long donc sa ramme
Alors si tu pouvais m'expliquer comment tu fait le déplacement de la "balle" dans ton programme ça serait sympa. j'ai essayer de comprendre mais je saisi pas tout...
Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Lun 04 Mai 2009, 20:11
Mais oui,avec plaisir ^^ :
J'utilise les variables suivantes :
-Les variables des valeurs X et Y (que j'appelle X et Y, très original :p )
-Et deux variables que j'additionnerai aux valeurs X et Y (appelée dans mon programme B pour X et C pour Y)
Ces deux variables là prennent soit la valeur 1( pour qu'elle se déplace d'une case vers la droite pour B, vers le bas pour C) soit la valeur -1( le haut pour C et la gauche pour B).
Et lorsque la balle "touche" un mur, un calcul simple permet d'inverser la trajectoire voulue :
Code
If Y=1 or Y=8:(-)C->C
Là, je dis que la valeur de C s'inverse si Y et égal à 1 (si la balle est en haut) ou à 8 (en bas).
Pareil pour les raquettes, sauf qu'il faut rajouter la condition pour savoir si la raquette est face à la balle.
Exemple :
Si la balle se dirige vers le haut-gauche, la valeur de B est 1 et la valeur de C est -1 !
Après il ne reste plus qu'à additionner la valeur à la variable X ou Y à la fin de la boucle :
Code
Y+C->Y:X+B->X
Voilà, en espérant que j'ai expliqué assez clairement
S'il te reste des questions, n'hésite pas.
Autorisation : Membre
Nb de messages : 81
Inscrit le : Lun 15 Sep 2008, 17:13
Posté le : Mar 05 Mai 2009, 18:39
Merci merci, c'est très clair
Vu comme ça, ça me semble évident...
Encore merci
bibules Invité
Posté le : Sam 26 Sep 2009, 19:40
C'est pour le programme pong 2 joueurs.
Voila mon écran :
--------------------
] * [
--------------------
Le jeu marche mais dès que la balle touche le coté du haut (celui en rouge) il me fait ERR:DOMAINE et me renvoi a la ligne en rouge...
0->G:0->H
Lbl 0
0->B:0->C
4->S:4->T:8->X
randInt(2,7->Y
randInt(0,1->B
If B=0:1->B
randInt(0,1->C
If C=0:1->C
ClrHome
Output(Y,X,"*
Output(4,1,G
Output(4,15,H
Pause
Lbl 1
Output(S,1,"]
Output(T,16,"[ Output(Y,X,"*
If Y=1 or Y=8:C->C
If X=16:Then
G+1->G:Goto 0
End
If X=1:Then
H+1->H:Goto 0
End
If X=15 and Y[superieur ou egal]T-1 and Y[inferieur ou egal]T+1 or X=2 and Y[superieur ou egal]S-1 and Y[inferieur ou egal]S+1
B->B
getKey->K
If K[different de]0:Then
If K=41 and S[different de]1:S-1->S
If K=61 and S[different de]8:S+1->S
If K=45 and T[different de]1:T-1->T
If K=65 and T[different de]8:T+1->T
End
Y+C->Y:X+B->X
ClrHome
Goto 1
Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Sam 26 Sep 2009, 19:52
Eh bien la balle sort de l'écran,donc il n'arrive plus à l'afficher.
Vérifie tout ce qui concerne X et Y,tu as du faire une erreur de copie avec une ligne contenant Y+1->Y.Regarde aussi bien les Lbl et les Goto.
Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Dim 27 Sep 2009, 22:09
Ou alors le problème vient de cette portion :
If Y=1 or Y=8: ( - )C->C
Arthur Invité
Posté le : Lun 28 Sep 2009, 21:42
Bonjour tout le monde,
j'ai recopié le code du pong 1 joueur et quand je met un mode il me dit error syntax
alors je met goto pour voir l'erreur et il me désigne la ligne
Randint(1.1->C:End
en mettant le curseur sur le -, pourtant je fais mes flèche avec le [sto] et la ligne est correcte. pouvez-vous m'aidez svp, merci !!
Arthur Invité
Posté le : Lun 28 Sep 2009, 21:43
Inutile de vous précisez que le smiley c'est ( - ) sans les espaces
fif Invité
Posté le : Mar 29 Sep 2009, 16:52
Bonjour j'ai un probleme pour le 1er code quand je fais exe c'est écrit :
ERR:SYNTAXE
apres je fais voir et j'ai la ligne
If C=0-)1->C
Faut il faire quelque chose de spécial pour le car moi je fais Parenthèse - fermer Parenthèse .
bonjour j'ai une Ti-82 stats.fr
voila j'ai un probleme de "SYNTAXE" je debute donc je c'est pas tros comment regle ce probleme merci
If X=2 and Y[superieur ou egal]S-N and Y[inferieur ou egal]S+N or X=F:Then( -)B->B
: P+(abs(N-2))/2->P:End
Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Sam 03 Oct 2009, 22:47
Ah oui, en fait dans le code tu donne, il manque deux points (":") entre le Then et le ( -)B->B ou alors il faut faire un retour à la ligne...
Sinon, je vois pas...
Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Dim 04 Oct 2009, 7:07
oui c'est ça soit tu retourne à la ligne soit tu met un :
Les deux points servent à séparer deux instructions (tu remarque que les : se mettent automatiquement quand tu fais un retour à la ligne).
Voila