Poster un nouveau sujet Poster une réponse Page: 1, ,      >>
(11) Pong et ses variantes
Auteur Message
Belvar



Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Mar 14 Avr 2009, 19:48   Citer 

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



Et voici tous les programes en .83p :
cliquer ici

 Adresse email Haut de page Bas de page 
 
mael-ti



Autorisation : Membre
Nb de messages : 25
Inscrit le : Lun 09 Mar 2009, 13:28
Posté le : Jeu 30 Avr 2009, 11:59   Citer 


Code
randIt

c'est quel touche?

----------------------
Vive les ti!
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Ven 01 Mai 2009, 12:59   Citer 

C'est la fonction RandInt qui se trouve dans MATHS+Prob+5.

Sangohan38

 Adresse email Haut de page Bas de page 
 
mael-ti



Autorisation : Membre
Nb de messages : 25
Inscrit le : Lun 09 Mar 2009, 13:28
Posté le : Lun 04 Mai 2009, 13:57   Citer 

Merci!

----------------------
Vive les ti!
 Adresse email Haut de page Bas de page 
 
denis



Autorisation : Membre
Nb de messages : 81
Inscrit le : Lun 15 Sep 2008, 17:13
Posté le : Lun 04 Mai 2009, 17:32   Citer 

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 crazy.gif

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...

Voilà, merci d'avance godgrace.gif

 Adresse email Haut de page Bas de page 
 
Belvar



Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Lun 04 Mai 2009, 20:11   Citer 

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 godgrace.gif
S'il te reste des questions, n'hésite pas.

 Adresse email Haut de page Bas de page 
 
denis



Autorisation : Membre
Nb de messages : 81
Inscrit le : Lun 15 Sep 2008, 17:13
Posté le : Mar 05 Mai 2009, 18:39   Citer 

Merci merci, c'est très clair

Vu comme ça, ça me semble évident... minied.gif

Encore merci

 Adresse email Haut de page Bas de page 
 
bibules
Invité
Posté le : Sam 26 Sep 2009, 19:40   Citer 

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:cupsmiley.gif1->B
randInt(0,1->C
If C=0:cupsmiley.gif1->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:cupsmiley.gifC->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
cupsmiley.gifB->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

C'est quoi le problème?

  Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Sam 26 Sep 2009, 19:52   Citer 

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.

 Adresse email Haut de page Bas de page 
 
Belvar



Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Dim 27 Sep 2009, 22:09   Citer 

Ou alors le problème vient de cette portion :

If Y=1 or Y=8: ( - )C->C

 Adresse email Haut de page Bas de page 
 
Arthur
Invité
Posté le : Lun 28 Sep 2009, 21:42   Citer 

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(cupsmiley.gif1.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 !!

  Haut de page Bas de page 
 
Arthur
Invité
Posté le : Lun 28 Sep 2009, 21:43   Citer 

Inutile de vous précisez que le smiley cupsmiley.gif c'est ( - ) sans les espaces

  Haut de page Bas de page 
 
fif
Invité
Posté le : Mar 29 Sep 2009, 16:52   Citer 

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=0sad.gif-)1->C

Faut il faire quelque chose de spécial pour le cupsmiley.gif car moi je fais Parenthèse - fermer Parenthèse .

  Haut de page Bas de page 
 
fif
Invité
Posté le : Mar 29 Sep 2009, 21:22   Citer 

Aucune idée pour mon probleme ? ( - )

  Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Mar 29 Sep 2009, 22:38   Citer 

salut

@ Arthur c'est une virgule entre -1 et 1 , pas un point happy.gif

@ fif tu doit utiliser la touche en bas entre . et enter happy.gif

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
DarkDemon
Invité
Posté le : Sam 03 Oct 2009, 14:41   Citer 

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

  Haut de page Bas de page 
 
Belvar



Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Sam 03 Oct 2009, 19:45   Citer 

Comme l'a si bien dit sypotu plus haut, il faut mettre les signe "moins" situé entre . et enter à la place de "( -)"

 Adresse email Haut de page Bas de page 
 
DarkDemon
Invité
Posté le : Sam 03 Oct 2009, 19:51   Citer 

je l'est fait et aussi pour les -> mais sa marche pas sad.gif

  Haut de page Bas de page 
 
Belvar



Autorisation : Membre
Nb de messages : 57
Inscrit le : Lun 09 Fév 2009, 15:46
Posté le : Sam 03 Oct 2009, 22:47   Citer 

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...

 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Dim 04 Oct 2009, 7:07   Citer 

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 happy.gif

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse Page: 1, ,      >>





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink