Poster un nouveau sujet Poster une réponse
Project de Programme jeux : demande d'aide
Auteur Message
nulhomme



Autorisation : Membre
Nb de messages : 4
Inscrit le : Ven 18 Jan 2013, 21:08
Posté le : Ven 18 Jan 2013, 22:39   Citer 

Bonjour tout le monde, ceci est la première fois que j'écris sur ce forum mais ce serait pour réclamer de l'aide. En effet j'ai le projet de crée un petit jeux mais je ne sais malheureusement pas comment ajouter certaine fonctionnalité ou corriger certain bug :

1)Je ne sais pas comment empêcher le ralentissement du jeux.

2)Je voudrait pouvoir crée des plateforme ou l'on pourrait sauter dessus.

Je ne sait pas si j'ai été explicite dans mes demande je préciserait si demande.(le signe "différent de" a été remplacer par "≠")


Code
:56->A:5->B:0->C:0->Xmin:10->Xmax:-10->Ymin:10->Ymax:56->I:10->J:0->V
:Texte(2,5,"SCORE:"
:" X"->Chaine2 (je remplacerait le X plus tard par autre chose) 
:Ligne(0,-10,10,-10)
:Texte(I,J,"*"
:While 1
:Texte(2,27,V
:If A=I et B=J
:Then
:V+1->V
:entAltéat(56,48)->I
:entAltéat(5,85)->J
:Texte(I,J,"*"
:End
:Texte(A,B,Chaîne2
:codeTouche->C
:If B≠1:If C=26:B+1->B
:If B≠90:If C=24:B-1->B
:If C=25
:Then
:A->E:A-10->D
:While A≠D
:If A=I et B=J ou A-1=I et B=J ou A+1=I et B=J ou A=I et B-1=J ou A=I et B+1=J
:Then
:V+1->V
:entAléat(56,48)->I
:entAléat(5,85)->J
:Texte(I,J,"*"
:End
:A-1->A
:If G≠A:Texte(G,B+1,"   "
:codeTouche->C
:If B≠1:If C=26:B+1->B
:If B≠90:If C=24:B-1->B
:Texte(A,B,Chaîne2
:A->G
:End
:While A≠E
:If A=I et B=J ou A-1=I et B=J ou A+1=I et B=J ou A=I et B-1=J ou A=I et B+1=J
:Then
:V+1->V
:entAléat(56,48)->I
:entAléat(5,85)->J
:Texte(I,J,"*"
:End
:codeTouche->C
:If B≠1: If C=26:B+1->B
:If B≠90:If C=24:B-1->B
:A+1->A
:Texte(A,B,Chaîne2
:End
:End
:End



Je sais que le ralentissement est du au :
"If A=I et B=J ou A-1=I et B=J ou A+1=I et B=J ou A=I et B-1=J ou A=I et B+1=J"
mais si je met comme au début du programme il est très dur de gagner le point.
Merci d'avance de vos réponse.

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 19 Jan 2013, 0:11   Citer 

Un test de différence peut souvent être remplacé par une soustraction. Dans ton programme ça marche partout.

Remplace "If A=I et B=J ou..."
Par : "If abs(A-I)+abs(B-J)<2"
Cela vérifie que le décalage est nul ou égal à un, mais pas égal à un pour les deux en même temps.

A première vue je ne remarque pas de cause de ralentissement. (d'autant qu'il n'y a pas de goto alors que c'est souvent ça le problème)
Ou alors tu veux simplement dire que c'est l'instruction la plus lourde, et nous ne parlons pas de la même chose. (moi je parle du fait que le programme serait de plus en plus lent avec le temps.)

Je te conseille d'utiliser des pxl-test pour détecter les objets et les plateformes.
Ainsi l'usage des variables est moins importante. Elles ne sont pas innutiles car il faut souvent vérifier ce qu'on a détecté par le pxl-test.

Si tu veux pouvoir traverser les plateformes dans le sens de montée, cela évitera de tester au dessus du X mais il faudra tenir compte du saut et redessiner la plateforme.

Il me parait impossible de scroller l'écran comme les jeux d'arcade. Ou bien il faut de la régularité, et ce sera difficile sans un programme assembleur.
(ce serait probablement ZSCROLL de Matrefeytontias)

Es-tu conscient que les If imbriqués ne se cumulent pas ? Tu as dû le faire exprès mais c'est pas net.
:If B-1:If C=26:B+1->B
L'action est réalisée si B=1 ou B-1 et C=26.

Si tu as l'occasion d'éviter des sto-> cela peut aider à gagner en vitesse.
Eviter des étapes de test aussi. Tes If imbriqués par exemple sont une bonne idée.

Quand je voie ce code, j'ai envie de rassembler les parties identiques comme les aléatoires.

Ce serait bien de paufiner l'effacement des objets et du personnage. Ils laissent des pixels.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 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 : Sam 19 Jan 2013, 4:23   Citer 

J'ai l'impression qu'une des causes du ralentissement est la présence de boucles imbriquées.
J'essayerai de regarder ça quand j'aurai plus de temps.

Sangohan38

 Adresse email Haut de page Bas de page 
 
nulhomme
Invité
Posté le : Sam 19 Jan 2013, 13:07   Citer 

Merci de vos réponse je vais essayer tout sa. Ce que je veux n'est pas un scrolling je veux rester sur la même partie de l'écran mais permettre de rajouter une sorte de porte sortie pour une fin de niveau (ou de jeux).
Pour le ralentissement je me suis mal exprimer je parle par rapport a la première version du programme que j'avais réaliser ou les saut était plus dynamique.
Je vais tester tout de suite les amélioration.

  Haut de page Bas de page 
 
nulhomme



Autorisation : Membre
Nb de messages : 4
Inscrit le : Ven 18 Jan 2013, 21:08
Posté le : Sam 19 Jan 2013, 13:31   Citer 

Les pxl-test me semble une bonne idée mais malheureusement je ne sais pas les utiliser.
Pour les if sa me sembler bien de les mettre ainsi puisque au début il ne l'était pas et cela cause des arrêts du programme.
Éviter les sto->, je ne sait pas comme je pourrait faire sa.
Les partie identique je voulais les mettre ensemble mais je me suis dit de sa ferait trop de goto a moins qu'il n'y est une autre solution a laquelle je n'ai penser.

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 19 Jan 2013, 14:58   Citer 

pxl-test :
On va t'apprendre alors. http://tout82.free.fr/forum/sujet.php?sujet=2324

les stos :
Moi non plus pour l'instant, c'est plutôt un objectif à atteindre.

En modifiant la structure du programme avec des tests ou des boucles, on peut éviter l'execution de certaines commandes. EN particulier des calculs de coordonnées quand on ne touche pas au clavier.


On peut éviter de stocker certaines valeurs si elles ne sont utilisées qu'une fois. Alors on écrit en brut à la place de la variable là où on l'utilise.
On peut même utiliser Rép/Ans pour des données aussitôt utilisées (et utilisées une seule fois). Ainsi on écrit le calcul sur une ligne vierge et on utilise Rép/Ans à la ligne suivante.

les parties identiques :
Rassembler des parties similaires se fait souvent avec des variables.
Je compte plancher dessus. (c'est ce que je préfère faire)

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
nulhomme



Autorisation : Membre
Nb de messages : 4
Inscrit le : Ven 18 Jan 2013, 21:08
Posté le : Sam 19 Jan 2013, 15:44   Citer 

Merci pour ce tutoriel je vais le lire attentivement.

 Adresse email Haut de page Bas de page 
 
nulhomme



Autorisation : Membre
Nb de messages : 4
Inscrit le : Ven 18 Jan 2013, 21:08
Posté le : Sam 19 Jan 2013, 17:43   Citer 

A propos du problème de trace qui reste peut on utiliser le pxt-test ?

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 19 Jan 2013, 19:11   Citer 

Tu peux l'utiliser pour une détection mais il n'y en a pas besoin.
Il faut :
-allonger la chaine d'effacement des étoiles de deux espaces et réduire l'abscisse de 1
-effectuer l'effacement du X sur l'ordonnée précédant le déplacement

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 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 : Lun 21 Jan 2013, 18:51   Citer 

Une autre solution si tu utilises la fonction text et que le scrolling est horizontal c'est de rajouter un espace avant ton texte de manière à se que l'espace efface le texte quand il se déplace vers la droite.

Sangohan38

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 21 Jan 2013, 19:47   Citer 

C'est déjà fait. Cela marche pour se déplacer d'un pixel à la fois.
Pour l'instant seuls les cotés des étoiles et le dessous du X posent problème. Le dessus et la droite se font tout seuls pour tous les caractères.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Lun 21 Jan 2013, 22:39   Citer 

Et en rajoutant une ligne de texte composée d'un espace juste au dessus du X? Cela ne suffirait pas à résoudre le problème?

Sangohan38

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





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