π
<-

[Prgm] iPong 3D

[Prgm] iPong 3D

Message non lude 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: Tout sélectionner
: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!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 88.5%
 
Messages: 3191
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Message non lude 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é)
Avatar de l’utilisateur
florian66Premium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 14.9%
 
Messages: 109
Inscription: 11 Nov 2013, 18:05
Localisation: Au point nemo
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Term S

Re: [Prgm] iPong 3D

Message non lude 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!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 88.5%
 
Messages: 3191
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Message non lude 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 ;)
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.5%
 
Messages: 776
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Prgm] iPong 3D

Message non lude 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
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 88.5%
 
Messages: 3191
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Message non lude 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
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.5%
 
Messages: 776
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Prgm] iPong 3D

Message non lude 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
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 88.5%
 
Messages: 3191
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Message non lude 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
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.5%
 
Messages: 776
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Prgm] iPong 3D

Message non lude 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...)
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 88.5%
 
Messages: 3191
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [Prgm] iPong 3D

Message non lude 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
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.5%
 
Messages: 776
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Suivante

Retourner vers TI-Basic

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
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
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2454 utilisateurs:
>2425 invités
>20 membres
>9 robots
Record simultané (sur 6 mois):
43991 utilisateurs (le 10/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)