Rechercher
Connexion
Chatbox externe
Derniers sujets
Partenaires
TI-Planet | Espace-TI : Forum |
Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)
Les posteurs les plus actifs du mois
Aucun utilisateur |
[Prgm] iPong 3D
3 participants
Page 1 sur 1
[Prgm] iPong 3D
Bonjour, bonsoir!
Je vous présente aujourd'hui mon nouveau jeu, iPong 3D
Avant toutes choses, voici un petit screen du jeu:
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:
Caractéristiques (v1.0):
> Mode 2 joueurs
> Graphismes 3D/Moteur 3D
> Compteur de victoires
> Design entièrement modulable: effets 3D, tailles
Laissez vos avis, et vos suggestions!
Je suis actuellement en train de travailler sur un v2 du programme. Elle sera bien plus rapide, voici un aperçut:
. Elle comporte malheureusement de nombreux bugs que je suis en train de corriger!
Voilà, voilà
Je vous présente aujourd'hui mon nouveau jeu, iPong 3D
Avant toutes choses, voici un petit screen du jeu:
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:
IPONG3D a écrit::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=45:",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
: 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
: If not(I:Goto A
: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
:Θ-4+D/2→P
:Z+C/2→Q
:Z-C/2→R
:P+3→L:O-2→S
:Repeat A≥L or A≤S or K=45
: getKey→K
: Text(57,25,V
: Text(57,68,W
: If max(K={21,31:Line(O,Q,O,R
: If max(K={25,34:Line(P,Q,P,R
: 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
: Pt-On(A,‾B,2
: Pt-Off(A,‾B
: A+M-(not(M→A
: B+N-(not(N→B
: If not(Pxl-Test(B+2,A:DelVar N
: If not(Pxl-Test(B,A+2:DelVar M
: If not(Pxl-Test(B-2,A:1→N
: If not(Pxl-Test(B,A-2:1→M
:End
:If K=45:Goto C
:V+(A≥L→V
:W+(A≤S→W
:ClrHome
:If V=10:Pause "VICTOIRE J1
:If W=10:Pause "VICTOIRE J2
:If V<10 or W<10:Goto 1
:Goto 2
:Lbl 4
:Stop
Caractéristiques (v1.0):
> Mode 2 joueurs
> Graphismes 3D/Moteur 3D
> Compteur de victoires
> Design entièrement modulable: effets 3D, tailles
Laissez vos avis, et vos suggestions!
Je suis actuellement en train de travailler sur un v2 du programme. Elle sera bien plus rapide, voici un aperçut:
. Elle comporte malheureusement de nombreux bugs que je suis en train de corriger!
Voilà, voilà
Re: [Prgm] iPong 3D
Impressionnant
Je regarderai ton code à l'occasion
Je regarderai ton code à l'occasion
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: [Prgm] iPong 3D
Pardon ? la balle se déplacerait en 3 dimensions ? Bravo. C'est bien mieux que ma première impression.
Néanmoins la profondeur manque de visibilité je trouve.
J'imagine les raquettes comme des carrés en perspective, le la balle soit comme un cube soit comme une intersection de trois segments orientés suivant les axes.
Néanmoins la profondeur manque de visibilité je trouve.
J'imagine les raquettes comme des carrés en perspective, le la balle soit comme un cube soit comme une intersection de trois segments orientés suivant les axes.
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: [Prgm] iPong 3D
Linkakro a écrit:Pardon ? la balle se déplacerait en 3 dimensions ? Bravo. C'est bien mieux que ma première impression.
Néanmoins la profondeur manque de visibilité je trouve.
J'imagine les raquettes comme des carrés en perspective, le la balle soit comme un cube soit comme une intersection de trois segments orientés suivant les axes.
Je pense que si on met les raquettes et la balle en perspective également, le programme va être fortement ralentit.
Quelle a été ta première impression ?
Re: [Prgm] iPong 3D
D'abord j'ai cru que la balle demeurait sur une face du pavé. Cela me déçois d'un jeu 3D. Par ailleurs la face est dans le plan de l'écran donc la perspective même cavalière perd de l'intérêt.
Ensuite j'ai lu le message de m@thieu41 et les caractéristiques annoncées : Graphismes 3D/Moteur 3D. J'ai donc cru que je me trompais, que la balle et les raquettes se déplacent dans l'espace.
J'ai alors proposé d'ajouter de la perspective au dessin des curseurs.
Enfin j'ai analysé à l'instant le code pour constater que la balle et les raquettes demeurent dans un plan.
Je conteste l'appellation "Moteur 3D".
D'autres choses me paraissent valoir la peine d'être changées.
Repeat K=105 or not(I
Je suis tenté de ne pas calculer régulièrement C/2 et D/2.
Tu peux stocker des pxl-Test dans M et N plutôt que d'utiliser des tests If.
Même si tu utilises toujours quelques If, tu peux tout-de-même en utiliser moins.
EDIT : mauvaise idée, j'ai oublié que M et N peuvent être inchangé dans le code original contrairement à ma proposition qui ne le respecte que difficilement.
Ensuite j'ai lu le message de m@thieu41 et les caractéristiques annoncées : Graphismes 3D/Moteur 3D. J'ai donc cru que je me trompais, que la balle et les raquettes se déplacent dans l'espace.
J'ai alors proposé d'ajouter de la perspective au dessin des curseurs.
Enfin j'ai analysé à l'instant le code pour constater que la balle et les raquettes demeurent dans un plan.
Je conteste l'appellation "Moteur 3D".
Wistaro a écrit:Caractéristiques (v1.0):
> Mode 2 joueurs
> Graphismes 3D/Moteur 3D
> Compteur de victoires
> Design entièrement modulable: effets 3D, tailles
D'autres choses me paraissent valoir la peine d'être changées.
- Code:
:Repeat K=105
: getKey→K
...
: If not(I:Goto A
:End
Lbl A
Repeat K=105 or not(I
Je suis tenté de ne pas calculer régulièrement C/2 et D/2.
Tu peux stocker des pxl-Test dans M et N plutôt que d'utiliser des tests If.
Même si tu utilises toujours quelques If, tu peux tout-de-même en utiliser moins.
EDIT : mauvaise idée, j'ai oublié que M et N peuvent être inchangé dans le code original contrairement à ma proposition qui ne le respecte que difficilement.
Dernière édition par Linkakro le Lun 24 Mar 2014 - 23:03, édité 1 fois
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: [Prgm] iPong 3D
Peut-on simplifier ceci
En ceci
Pour les curseurs 3D, il faudrait alors que la face noire soit le fond du pavé, pour que la profondeur du curseur soit visible....Dans ce cas, il faut également changer la balle...Mais même dans ce cas, la perspective ne paraîtrait pas du tout réaliste... Ou alors extruder les curseurs vers l'avant....
Un autre soucis se pose. Lorsque la balle atterrit sur un curseur en mouvement, celle-ci n'est pas arrêté car une ligne noire empêche la trace lorsque l'utilisateur presse les touche. Je pourrais rajouter 2 lignes noires, l'une du Y supérieur du plateau jusqu'au Y supérieur du curseur, et pareil pour le Y inférieur.
Cette méthode ralentit fortement le jeu
- Code:
If not(Pxl-Test(B+2,A:DelVar N
: If not(Pxl-Test(B,A+2:DelVar M
: If not(Pxl-Test(B-2,A:1→N
: If not(Pxl-Test(B,A-2:1→M
En ceci
- Code:
Pxl-Test(B+2,A->N
: Pxl-Test(B,A+2->M
: not(Pxl-Test(B-2,A->N
: not(Pxl-Test(B,A-2→M
Pour les curseurs 3D, il faudrait alors que la face noire soit le fond du pavé, pour que la profondeur du curseur soit visible....Dans ce cas, il faut également changer la balle...Mais même dans ce cas, la perspective ne paraîtrait pas du tout réaliste... Ou alors extruder les curseurs vers l'avant....
Un autre soucis se pose. Lorsque la balle atterrit sur un curseur en mouvement, celle-ci n'est pas arrêté car une ligne noire empêche la trace lorsque l'utilisateur presse les touche. Je pourrais rajouter 2 lignes noires, l'une du Y supérieur du plateau jusqu'au Y supérieur du curseur, et pareil pour le Y inférieur.
Cette méthode ralentit fortement le jeu
Re: [Prgm] iPong 3D
Tu viens de me faire réaliser que représenter la profondeur est plus pénible que je pensais. Un autre problème se pose avec les deux faces de premier plan qui sont actuellement blanches, car on ne peut pas se contenter de les mettre en transparence.
Je n'ai pas compris cette histoire de barre noire ou blanche supplémentaire. Je ne maîtrise pas assez le code actuellement.
Je réalise que j'ai eu tort de te proposer de stocker les pxl-Test dans M et N : si aucune condition n'est remplie alors la valeur est inchangée. Tandis que ma proposition de stocker directement le résultat booléen modifiera la valeur en toutes circonstances. Et s'assurer en booléen de ne pas agir dans un certain cas est assez pénible.
Tu décrémentes A lorsque le pas M est nul. Comme la variable M est booléenne, cela revient à ajouter ou enlever 1.
Je te propose ceci. J'espère gagner du temps en ne lisant la variable qu'une seule fois.
Je n'ai pas compris cette histoire de barre noire ou blanche supplémentaire. Je ne maîtrise pas assez le code actuellement.
Je réalise que j'ai eu tort de te proposer de stocker les pxl-Test dans M et N : si aucune condition n'est remplie alors la valeur est inchangée. Tandis que ma proposition de stocker directement le résultat booléen modifiera la valeur en toutes circonstances. Et s'assurer en booléen de ne pas agir dans un certain cas est assez pénible.
- autre remarque:
- Par ailleurs ton pxl-Test est tel que les seconds tests peuvent écraser le test précédent mais ce n'est pas systématique. Tandis que ta tentative remplace systématiquement une issue par la seconde.
J'imaginais une écriture comme celle-ci en supposant qu'il n'y ait pas de priorité entre les seconds et premiers tests, contrairement à ton écriture successive.
J'ai aussi supposé que les événements d'une même variable sont incompatibles.- Code:
: Pxl-Test(B+2,A) or not(Pxl-Test(B-2,A→N
: Pxl-Test(B,A+2) or not(Pxl-Test(B,A-2→M
Tu décrémentes A lorsque le pas M est nul. Comme la variable M est booléenne, cela revient à ajouter ou enlever 1.
Je te propose ceci. J'espère gagner du temps en ne lisant la variable qu'une seule fois.
- Code:
: A+M-(not(M→A // Parenthèse devant not inutile par ailleurs.
: B+N-(not(N→B
////// deviendrait
: A+2M-1→A
: B+2N-1→B
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: [Prgm] iPong 3D
[code]: Pxl-Test(B+2,A) or not(Pxl-Test(B-2,A→N
: Pxl-Test(B,A+2) or not(Pxl-Test(B,A-2→M [code]
Cela ne fonctionne pas :-(
Je poste ma v2 aujourd'hui
: Pxl-Test(B,A+2) or not(Pxl-Test(B,A-2→M [code]
Cela ne fonctionne pas :-(
Je poste ma v2 aujourd'hui
Re: [Prgm] iPong 3D
Nouvelle version!
Voici tout d'abord le code:
Screen:
Ajouts:
> Rapiditée augmentée
> Optmisation du code
Voici tout d'abord le code:
iPONG 3D a écrit::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
Screen:
Ajouts:
> Rapiditée augmentée
> Optmisation du code
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Dim 16 Oct 2022 - 21:11 par Wistaro
» Bonne année 2018!
Ven 2 Nov 2018 - 19:42 par Ti64CLi++
» Lancement du TI-Concours 2017 !
Sam 20 Mai 2017 - 0:27 par Paulo1026
» Chaînes Youtube des membres
Ven 19 Mai 2017 - 22:41 par Wistaro
» cacul du taux d'intêret
Ven 24 Mar 2017 - 21:50 par m@thieu41
» [Projet] Un mario by tout82
Dim 29 Jan 2017 - 14:09 par Wistaro
» Cherche documentation assembleur TI82stat
Mer 25 Jan 2017 - 12:29 par Ti64CLi++
» Probleme Ti-82 Stats fr
Jeu 12 Jan 2017 - 13:56 par Ti64CLi++
» ROM 82 stats.fr
Jeu 15 Déc 2016 - 10:24 par Ti64CLi++