π
<-

[Prgm] iPong 3D

[Prgm] iPong 3D

Unread postby Wistaro » 28 Mar 2014, 19:59

Bonjour, bonsoir!

Je vous présente aujourd'hui mon nouveau jeu, iPong 3D
Avant toutes choses, voici un petit screen du jeu:
Image
Sympa, non?

Comme son nom l'indique, iPong3D est un jeu de pong, jouable à 2 joueurs pour le moment.
Vous pouvez facilement modifier la taille du plateau de jeu, ainsi que les effets de 3D!


>Pour cela, rien de plus simple: il vous suffit d'aller dans le menu d'options, puis dimensions. Choisissez ensuite la largeur et la longueur de la fenêtre, et le programme arrangera tout seul le reste. Puis allez dans Réglages 3D, et choisissez avec les 4 flèches directionnelles l'effet de perspective que vous souhaitez. Choisissez Tout si vous voulez tout régler (3D + Dimension)

>Une fois dans le jeu, le premier joueur utilise les touches 2nde et Alpha pour jouer, et l'autre les flèches haut et bas.  
>Au bout de 10 buts, le joueur gagne, et la partie continue jusqu'à l'arrêt du programme.

>Appuyez sur CLEAR pour revenir au menu. Toute vos modifications de terrains sont conservées!


Voici le code:
Code: Select all
:DelVar I
:0→Xmin:1→∆X
:0→Ymax:‾62→Ymin
:GridOff:AxesOff
:77→D:45→C:‾33→Z:47→Θ
:ClrDraw
:Lbl 7
:"IPONG→Str1
:1→B
:For(A,13,46,7
:   Text(A,3,sub(Str1,B,1
:   B+1→B:End
:‾55→A
:For(B,‾10,‾28,‾1
:   Line(9,B,86,B
:   Line(9,A,86,A
:   A+1→A
:End
:Text(29,28,"BY WISTARO
:For(T,9,86
:   For(U,‾29,‾36,‾1
:      Pt-Change(T,U
:   End:End
:For(T,‾36,‾29
:   Line(9,T,86,T
:   69!-69!
:End
:StorePic 3
:Lbl C
:DelVar IClrDraw:RecallPic 3
:Menu("  °IPONG°  ","> JOUER",5,"> OPTIONS",3,"> QUITTER",4
:Lbl 3
:Menu("OPTIONS","DIMENTIONS",6,"REGLAGES 3D",8,"TOUT",B,"RETOUR",C
:Lbl 8:1→I:Goto 5
:Lbl B:1→I
:Lbl 6
:ClrHome:ClrDraw
:Disp "LARGEUR?
:Input "DEFAUT=46:",C
:Disp "LONGUEUR?
:Input "DEFAUT=77:",D
:For(A,Θ-D/2,Θ+D/2
:   Line(A,Z-C/2,A,Z+C/2
:End
:StorePic 3
:Lbl 5
:StorePic 2
:7→G:7→H
:Repeat K=105 or not(I
:   getKey→K
:   G+(K=26)-(K=24→G
:   H+(K=25)-(K=34→H
:   If max(K={24,25,26,34:Then
:      ClrDraw
:      RecallPic 2:End
:   Line(Θ-D/2,Z+C/2,Θ+G-D/2,Z+H+C/2
:   Line(Θ+D/2,Z+C/2,Θ+G+D/2,Z+H+C/2
:   Line(Θ+G-D/2,Z+H+C/2,Θ+G+D/2,Z+H+C/2
:   If G≥0:Then
:      Line(Θ+D/2,Z-C/2,Θ+G+D/2,Z+H-C/2
:      Line(Θ+G+D/2,Z+H+C/2,Θ+G+D/2,Z+H-C/2
:   Else
:      Line(Θ-D/2,Z-C/2,Θ+G-D/2,Z+H-C/2
:      Line(Θ+G-D/2,Z+H+C/2,Θ+G-D/2,Z+H-C/2
:   End:End
:Lbl A
:StorePic 1
:DelVar VDelVar W
:Lbl 1
:RecallPic 1
:44→A:32→B
:randInt(0,1→M
:randInt(0,1→N
:Z→E:E→F
:Θ+4-D/2→O
:round(O,0→O
:O+(O/2=int(O/2))→O
:Θ-4+D/2→P
:round(P,0→P
:P+(P/2=int(P/2))→P
:Z+C/2→Q
:Z-C/2→R
:int(abs(R)-1→L
:int(abs(Q)+1→S
:Repeat A≥P or A≤O or K=45
:   getKey→K
:   Text(57,25,V
:   Text(57,68,W
:   If max(K={21,31:Then:Line(O,Q,O,F:Line(O,F+3,O,R:End
:   If max(K={25,34:Then
:      Line(P,Q,P,E:Line(P,E+3,P,R
:   End
:   Line(P,E,P,E+3,0
:   Line(O,F,O,F+3,0
:   E-2(K=34)+2(K=25→E
:   F-2(K=31)+2(K=21→F
:   A+2M-2not(M→A
:   B+2N-2not(N→B
:   If not(Pxl-Test(B+3,A:DelVar N
:   If not(Pxl-Test(B,A+3:DelVar M
:   If B≠S:Then
:      Pt-Off(A,‾B
:      Pt-On(A+2,‾B+2
:   End
:   If B≠L:Then
:      Pt-On(A+2,‾B-2
:      Pt-On(A-2,‾B-2
:   End
:   Pt-On(A-2,‾B+2
:   If not(Pxl-Test(B-3,A:1→N
:   If not(Pxl-Test(B,A-3:1→M
:End
:If K=45:Goto C
:V+(A≥P→V
:W+(A≤O→W
:ClrHome
:If V=10:Pause "VICTOIRE J1
:If W=10:Pause "VICTOIRE J2
:If V<10 or W<10:Goto 1
:Goto C
:Lbl 4
:Stop



Laissez vos avis, et vos suggestions! :)


Je suis actuellement en train de travailler sur un v3 du programme. Elle comportea un mode 1 joueur avec ia sur lequel je suis en train de travailler :)



Voilà, voilà :)
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Unread postby florian66 » 28 Mar 2014, 21:41

pas mal du tout :)
par contre le top du top ce serai que tu arrive a creer une interface en asm pour jouer a 2 caltos :D
+ facile a dire qu a faire ;)
Mes projets : -jeu en asm z80 Zelda(en pause)

-Librairie 8 niveaux de gris en asm z80(terminé)
User avatar
florian66Premium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 14.9%
 
Posts: 109
Joined: 11 Nov 2013, 18:05
Location: Au point nemo
Gender: Male
Calculator(s):
MyCalcs profile
Class: Term S

Re: [Prgm] iPong 3D

Unread postby Wistaro » 29 Mar 2014, 09:27

Merci ;-)

Déjà,le mode contre l'IA et après pourquoi pas le mode 2 calculatrice ;-)
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Unread postby grosged » 29 Mar 2014, 15:45

Hey Wistaro, Chouette ton "Pong" !
ça me rappelle des souvenirs ! (console de jeu vidéo , image en noir & blanc, branché sur la prise antenne de la télé)
Au sujet de l'IA je me souviens que , dans ce mode "contre la machine" , les mouvements de la raquette étaient simplement calqués sur ceux de la balle ( même coordonnée Y)
Après...y a certainement d'autres façons de programmer l' IA ;)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.5%
 
Posts: 776
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Re: [Prgm] iPong 3D

Unread postby Wistaro » 29 Mar 2014, 16:55

Mon IA est différente: elle anticipe le mouvement de la balle.
En fait, lorsque la balle arrive sur la partie supérieure ou inférieure du terrain, quelle vient de la droite vers la gauche (le joueur contrôle le pad de droite) et que elle est à moins de la largeur du terrain de l'extrémité gauche, alors je stocke dans une variable la distance (ordonnée) qui reste à parcourir pour atteidre le bord gauche (-3 à cause de la raquette située à 4px du bord).Cette valeur est stocké dans U

Je soustrais cette valeur à celle de A (ordonné de la balle), j'ai l'ordonnée du point de chute de la balle.

Deux cas se présentent: 1)la balle a touchée le haut du terrain: je fais B + la valeur de U
2) Sinon je fais B -U.

Donc j'ai l'ordonnée du point de chute de la balle.(V)

Enfin, suivant si B>V ou B<V, la valeur de F (le pad: celle que contrôle le joueur avec le pad en mode 2j) est incrémentée ou decrementé. Et la raquette s'arrête pour stopper la balle. Lorsque elle repart, toutes les variables de l'Ia se réinitialisent.

Et le tout en prenant en compte que le terrrain est entièrement modulable ^^


Ce n'est peut être la meilleure solution, je sais pas....J'ai trouvé que cette méthode pour le moment. Le seul truck, c'est que si la largeur > longueur, le pad ne s'arrêtera pas au bon endroit...Et le programme est fortement ralentit, même si j'ai essayé d'optimiser l'IA à fond
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Unread postby grosged » 29 Mar 2014, 17:33

mm je vois...
après renvoi de la balle, La raquette de l'IA se repositionnerait au milieu ? ...comme au tennis ;)
Ainsi ça limiterait les distances de déplacement
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.5%
 
Posts: 776
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Re: [Prgm] iPong 3D

Unread postby Wistaro » 29 Mar 2014, 17:50

Bonne idée, mais cela va obliger d'utiliser un Then--End dans 2 conditions...En effet, les données de l'IA sont stockées dans une liste. La première valeur de cette liste est un booléen: 1=déplacement de la raquette activé, 0=raquette immobile.. Lorsque la balle touche l'extremité gauche et rebondit, je DelVar L1(1) en plus du pxtest et comme on peut cumuler un Delvar + une autre fonction sans utiliser de Then--End, c'est cool.

Et replacer la balle demanderait une autre condition genre If not(l1(1: -33->F. Une autre source de rralentissement.


Je pense aussi régler la difficulté de l'IA en modification le pas d'incrémentation/de decrerementation de F. Facile: 1, difficile: 3
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Unread postby grosged » 29 Mar 2014, 19:10

J'ai pas encore bien déchiffré tout le listing, mais j'ai déjà vu ça:

Dans ta boucle principale, je pense que tu pourrais encore optimiser
-les scores (qui font ralentir car affichés à chaque passage)
-les limites de mouvement des raquettes sur le terrain (que tu pourrais inclure directement dans la modification des variables E & F
ainsi , au lieu de E-2(K=34)+2(K=25→E
on aurait (par ex) E+2((K=34 and E<LimiteV1)-(K=25 and E>limiteV2→E
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.5%
 
Posts: 776
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Re: [Prgm] iPong 3D

Unread postby Wistaro » 29 Mar 2014, 19:43

Pour les limites, sa ralentira encore plus le programme pour pas grand chose...
En mode 2 joueurs, si l'utilisateur sort son curseur du plateau, il perdra juste le point...

Par contre, en mode auto (IA) , là il faut mettre des limites (inutile, d'ailleurs si l'IA est fonctionnelle...)
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Unread postby grosged » 29 Mar 2014, 19:49

Je ne pense pas que ça ralentirait, faut juste faire la chasse aux "IF" ;)

et pour ce qui est des raquettes, je parlais d'inclure les limites dans la gestion de E & F
pour que , dans la boucle principale, l'on affiche systématiquement les raquettes "blanches" avec à chaque extrémité un point noir (donc pas besoin de IF en cas de changement dans E ou F puisque qu'à chaque déplacement de raquette vers le haut/bas les points noirs effaceraient automatiquement toute trainée blanche

Tu peux également optimiser en te passant de la fonction de test pixel :
gérer les tests de collision uniquement au moyen des variables concernées

en ce qui concerne la gestion de la balle, je la "vois" comme ça:
bx,by coordonnées de la balle
sx,sy directions de la balle (ainsi dès qu'il y a obstacle, on fait un -sx->sx ou -sy->sy

et dans la boucle principale : bx+sx->bx by+sy->by
puis -(sx and bx=limit1 or bx=limit2 ->sx
-(sy and by=limit1 or by=limit2 ->sy
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.5%
 
Posts: 776
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Next

Return to TI-Basic

Who is online

Users browsing this forum: No registered users and 6 guests

-
Search
-
Social TI-Planet
-
Featured topics
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2197 utilisateurs:
>2162 invités
>28 membres
>7 robots
Record simultané (sur 6 mois):
43991 utilisateurs (le 10/09/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)