Poster un nouveau sujet Poster une réponse
Aide pour mon premier programme
Auteur Message
The Werty



Autorisation : Membre
Nb de messages : 34
Inscrit le : Mar 03 Jan 2012, 23:40
Posté le : Sam 14 Jan 2012, 0:34   Citer 

Bonjour a tous happy.gif
Je suis entrain de réaliser mon "vrai" programme, quand je l'aurais finis je le posterais winkle.gif
je débute et Je ne sais pas comment m'y prendre pour faire apparaitre un dessin aleatoirement, je m'explique: j'ai en tete un petit jeu: (en simple) on a un viseur, et un bonhomme doit apparaitre aleatoirement dans ce viseur, et on doit appuyer sur [enter] pour tirer, mais le bonhomme doit apparaitre aleatoirement et rester a l'ecran trois secondes environ, je ne sais pas faire cela...
J'ai pensé a quelque chose pour l'apparition aleatoire:

Code

RappelImage 1 // le viseur
Lbl H
EntAleat(1,40-> C // j'ai mis quarante car ça me semble pas mal
If C (différent de) 10
Goto H
If C=10
then
RappelImage 2 // le bonhomme


Et apres j'ai essayer beaucoup de choses sans résultat donc je ne vois pas l'utilitée de les poster ^^
donc ce que je cherche c'est comment simplifier ou carrement modifier ce code, comment laisser le bonhomme trois secondes et l'enlever sans appuyer sur un bouton, et comment utiliser le codetouche car je n'y suis pas arrivé, je peux appuyer sur [enter] a n'importe quel moment alors que je le veux seulement quand le bonhomme apparait...
J'espere que vous pourrez m'aider winkle.gif (je sais que oui!)

----------------------
La programmation aujourd’hui est une course entre les développeurs tâchant de concevoir des programmes de plus en plus nombreux et efficaces, convenant même aux imbéciles, et l’univers essayant de produire des imbéciles de plus en plus nombreux et efficaces.
Jusqu’à présent, c’est l’univers qui gagne.
 Adresse email Haut de page Bas de page 
 
tapenad



Autorisation : Membre
Nb de messages : 197
Inscrit le : Jeu 17 Nov 2011, 13:20
Posté le : Sam 14 Jan 2012, 10:57   Citer 

pour le code touche(A est la hauteur du viseur,B la gauchedroitité loupe.gif,la fenetre est en zoom standart) :

Code

:codetouche->K
:If K=25               ///la fleche du haut
:A-1->A
:affiche le viseur
:If K=24               ///la fleche de gauche
:B-1->B
:affiche le viseur
:If K=26               ///la fleche de droite
:A+1->A
:affiche le viseur
:If K=34               ///la fleche du bas
:B+1->B
:affiche le viseur


pour enter:

Code
:code touche->K
:If K=105
:machin tire


pour laisser le bonhomme 3 secondes, fait un for puit des pt-off


et voila ... bigmouth.gif bigmouth.gif

----------------------
L’erreur est humaine, mais pour provoquer une vraie catastrophe, il faut un ordinateur.

je suis premier!!!

je m'aime.
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 14 Jan 2012, 13:25   Citer 

Tout d'abord je réécris le premier code :
Code
RappelImage 1 // le viseur
Repeat 1=EntAleat(1,40
End
RappelImage 2 // le bonhomme

Le second If était inutile à cause du premier If.
J'ai remplacé le Lbl par une boucle Repeat.
Les Gotos sont faciles à utiliser mais les boucles sont souvent plus efficaces en mémoire et vitesse.

Citer : The Werty
on a un viseur, et un bonhomme doit apparaitre aleatoirement dans ce viseur

L'initiative de préparer un déplacement du viseur est anticipée.
Pour l'instant l'aléatoire et le RappelImage servent à afficher un personnage à un emplacement fixe au bout d'un temps indéfini.

--- gestion complète du premier concept

Code
EffVar S // le score à 0
While 1        // boucle infinie
RappelImage 1  // le viseur
Texte(0,0,S
Repeat 1=EntAleat(1,40
End
RappelImage 2 // le bonhomme
EffVar A
For(W,1,200  // execute le contenu 200 fois, chez moi ça dure 3 secondes.
codeTouche  // capte une pression de touche, sinon vaut 0
If Rép      // détecte que le codetouche est non nul
Rép->A      // remplace A par le codeTouche s'il est non nul
End
If A    // =105 possible, mais sans, l'appui sur une quelconque touche suffit
S+1->S  // marque un point
EffDessin
End     // retour au While 1



Je rédigerai la suite de mes pensées plus tard.

----------------------
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 
 
The Werty



Autorisation : Membre
Nb de messages : 34
Inscrit le : Mar 03 Jan 2012, 23:40
Posté le : Sam 14 Jan 2012, 15:22   Citer 

merci j'ai un peu avancé mais il reste quelques problèmes...


Citer
pour le code touche(A est la hauteur du viseur,B la gauchedroitité ,la fenetre est en zoom standart) :

Code

:codetouche->K
:If K=25 ///la fleche du haut
:A-1->A
:affiche le viseur
:If K=24 ///la fleche de gauche
:B-1->B
:affiche le viseur
:If K=26 ///la fleche de droite
:A+1->A
:affiche le viseur
:If K=34 ///la fleche du bas
:B+1->B
:affiche le viseur


mais comme le viseur est en image (image1) comment je définis A et B? (je sais pas si j'm'exprime bien ><')

et pour le codetouche, si je mets juste:
:code touche->K
:If K=105

on peut appuyer sur [enter] quand on veut et ça marqueras un point quand même, mais seulement quand le personnage sera affiché...



Citer

EffVar S // le score à 0
While 1 // boucle infinie
RappelImage 1 // le viseur
Texte(0,0,S
Repeat 1=EntAleat(1,40
End
RappelImage 2 // le bonhomme
EffVar A
For(W,1,750 // execute le contenu 750 fois, chez moi ça dure 3 secondes.
codeTouche // capte une pression de touche, sinon vaut 0
If Rép // détecte que le codetouche est non nul
Rép->A // remplace A par le codeTouche s'il est non nul
End
If A // =105 possible, mais sans, l'appui sur une quelconque touche suffit
S+1->S // marque un point
EffDessin
End // retour au While 1



quand je rentre cela, quand j'appuis sur [enter] il ne ce passe rien...

EDIT: j'ai mis un Disp "gagne!" après le EffDessin et je me suis aperçu que c'est pas qu'il ne se passe rien mais qu'il se passe toujours la même chose quoi qu'on fasse, je m'explique:
je vois le viseur, le personnage apparaît et la j'appui sur [enter] mais le dessin s'efface et le viseur apparaît mais sans qu'il n'y ai rien qui se passe,
c'est pour cela que j'ai mis un disp "gagne!" et après observation, meme si je n'appui pas sur [enter] et bien un "gagne!" s'affiche, a peine quelque fractions de secondes...

donc en résumé:
je ne trouve pas comment bouger le viseur car je ne sais pas comment définir A et B sur l'image 1
et je n'arrive pas a marquer quelque chose quand on a eu le personnage et quand on l'a raté...
Help! ^^

----------------------
La programmation aujourd’hui est une course entre les développeurs tâchant de concevoir des programmes de plus en plus nombreux et efficaces, convenant même aux imbéciles, et l’univers essayant de produire des imbéciles de plus en plus nombreux et efficaces.
Jusqu’à présent, c’est l’univers qui gagne.
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 14 Jan 2012, 18:32   Citer 

J'ai négligé des paramètres dans mon test du chrono... Remplace 750 par 200 et ce sera mieux. A moins que tu ais un autre problème.

Mon message n'était pas terminé, je comptais reprendre maintenant.
Il est impossible de dessiner une Pic à la position voulue car les Pic représentent la totalité de l'écran.
Je comptais présenter une autre approche, sans les Pic, qui aurait permise de déplacer le viseur et de tirer sur un personnage aléatoire.

Je m'aprête à plancher sur la suite.

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



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Sam 14 Jan 2012, 18:59   Citer 

Personnellement, je vois que deux possibilités :

- Soit tu le fais en "non graphique", et ça devient beaucoup plus simple
- Soit tu le fais dans un autre language que le Ti-Basic, parce que déplacer un viseur, ça signifie déplacer tous le reste de l'écran en laissant le viseur fixe, ça signifie fluidité, qui est le contraire de Ti-Basic ^^.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
tapenad



Autorisation : Membre
Nb de messages : 197
Inscrit le : Jeu 17 Nov 2011, 13:20
Posté le : Sam 14 Jan 2012, 19:04   Citer 

soit tu fais un cercle et deux trait pour le viseur qui peut alors bouger(plutot des pt-on pour le cercle sinon c'est trop lent)...

----------------------
L’erreur est humaine, mais pour provoquer une vraie catastrophe, il faut un ordinateur.

je suis premier!!!

je m'aime.
 Adresse email Haut de page Bas de page 
 
The Werty



Autorisation : Membre
Nb de messages : 34
Inscrit le : Mar 03 Jan 2012, 23:40
Posté le : Dim 15 Jan 2012, 0:01   Citer 

J'avais deja remplacé le 750 par 200 (a vrai dire par 150 ^^)
Oui alors pour le viseur il est clair que je n'ai pas a mettre une image mais un cercle et deux lignes suffisent.
Mais quand j'appuis sur [enter] ca ne change rien, c'est comme quand je n'appui sur rien... Alors j'attend avec impatience le reste de ton message linkakro bigmouth.gif

----------------------
La programmation aujourd’hui est une course entre les développeurs tâchant de concevoir des programmes de plus en plus nombreux et efficaces, convenant même aux imbéciles, et l’univers essayant de produire des imbéciles de plus en plus nombreux et efficaces.
Jusqu’à présent, c’est l’univers qui gagne.
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 15 Jan 2012, 18:17   Citer 

Le programme que j'ai déjà posté est complet.
Je l'ai testé et il n'y a pas de problème.
Vérifie que tu as utilisé un EffDessin et non un EffEcr vers la fin.
Normalement l'appui sur une quelconque touche fait augmenter le score et efface l'écran à la fin du chrono.

Les cercles sont les plus gros problèmes de fluidité dans les programmes.
J'ai peu réfléchit à tes questions portant sur les disp mais je pense que cela n'est plus très important maintenant que le chrono est corrigé.


Quand on veut qu'une procédure soit executée jusqu'à ce qu'on appuie sur une touche, il est pratique d'utiliser :
Code
Repeat A
codeTouche->A
...
End



===================

J'ai tenté d'appliquer des choses simples, mais cela n'a marché qu'après maintes modifications.
Je ne suis même pas sûr de savoir l'expliquer entièrement.
Alors pas du tout de mise en place étape par étape cette fois.
Toutefois il fonctionne puisque je l'ai testé.

Code
ZStandard
AxesOff
DelVar SDelVar ADelVar BDelVar W
1üC
While 1
Text(0,0,S
If C
Then
4randInt(0,2)-8üX // génère une position aléatoire
4randInt(0,2)-8üY
End
DelVar W
Repeat not(C) and (K=105 or W=10) or C and not(randInt(0,20
getKeyüK
If K
Then
Line(A-2,B,A+2,B,0 // efface le viseur si on se déplace
Line(A,B-2,A,B+2,0
End
A-4(K=24)+4(K=26üA // déplacement du viseur
B+4(K=25)-4(K=34üB
Line(A-2,B,A+2,B // dessine le viseur
Line(A,B-2,A,B+2
W+1üW
End
Line(X,Y+2,X,Y,C  // C sert à soit dessiner, soit effacer
Line(X-1,Y+1,X+1,Y+1,C
Line(X,Y,X-1,Y-1,C
Line(X,Y,X+1,Y-1,C
not(CüC
If K=105 and A=X and B=Y and C // teste qu'on touche le bonhomme
S+1üS
End

C sert à indiquer si un bonhomme est présent.
Le Repeat sert à rester dans la boucle de base. On en sort si l'aléatoire est validé, si on appuie sur entrer, ou si le temps est écoulé pour un bonhomme.
Ce qu'il y a après le End du Repeat dessine un bonhomme s'il n'y en a pas, l'efface s'il y en a un, et fait gagner des points si on a appuyer sur entrer face à un bonhomme.
Pour la compréhension, méfiez vous du not(C)->C qui impose deux inversions de tests ailleurs. (celui juste après lui et celui juste avant le Repeat)
W représente un chrono

----------------------
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 
 
The Werty



Autorisation : Membre
Nb de messages : 34
Inscrit le : Mar 03 Jan 2012, 23:40
Posté le : Lun 16 Jan 2012, 18:09   Citer 

Effectivement j'avais fais une faute, j'ai a peu pres ce que je veux winkle.gif je vais essayer d'ameliorer un peu happy.gif merci a tous happy.gif

Edit: quelle est la traduction française de Zstandard svp? cupsmiley.gif

EDIT:
Si je comprend bien ton programme, Linkakro,


Code
ZStandard
AxesOff
DelVar SDelVar ADelVar BDelVar W
1üC
While 1
Text(0,0,S
If C
Then
4randInt(0,2)-8üX // génère une position aléatoire
4randInt(0,2)-8üY
End
DelVar W
Repeat not(C) and (K=105 or W=10) or C and not(randInt(0,20
getKeyüK
If K
Then
Line(A-2,B,A+2,B,0 // efface le viseur si on se déplace
Line(A,B-2,A,B+2,0
End
A-4(K=24)+4(K=26üA // déplacement du viseur
B+4(K=25)-4(K=34üB
Line(A-2,B,A+2,B // dessine le viseur
Line(A,B-2,A,B+2
W+1üW
End
Line(X,Y+2,X,Y,C  // C sert à soit dessiner, soit effacer
Line(X-1,Y+1,X+1,Y+1,C
Line(X,Y,X-1,Y-1,C
Line(X,Y,X+1,Y-1,C
not(CüC
If K=105 and A=X and B=Y and C // teste qu'on touche le bonhomme
S+1üS
End



Il y a une cible en bonhomme (est ce normal qu'il n'y ai pas de tete?) et on a un selecteur pour aller la viser et tirer...
Ce n'est pas ce que je pensais quand je parlai de viseur, mais c'est un bon concept happy.gif

----------------------
La programmation aujourd’hui est une course entre les développeurs tâchant de concevoir des programmes de plus en plus nombreux et efficaces, convenant même aux imbéciles, et l’univers essayant de produire des imbéciles de plus en plus nombreux et efficaces.
Jusqu’à présent, c’est l’univers qui gagne.
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 17 Jan 2012, 7:57   Citer 

Zstandart reste Zstandart je crois.

([zoom][6])

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 17 Jan 2012, 13:44   Citer 

Oui Zstandard est invariable sur les TI Z80. (j'ai même vérifié dans le catalogue de persalteas)

Mon personnage n'a pas de tête afin que le tracé soit rapide et qu'on puisse traîter le dessin et l'effacement avec une seule fonction.
Sinon il aurait fallut Text(Y,X,"O") et Text(Y,X," ").
Ou bien il aurait fallut avoir une ti83plus et écrire Circle(Y,X,R,{i})

----------------------
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 
 
The Werty



Autorisation : Membre
Nb de messages : 34
Inscrit le : Mar 03 Jan 2012, 23:40
Posté le : Mer 25 Jan 2012, 22:42   Citer 

Okay merci, ton programme marche très bien! godgrace.gif

----------------------
La programmation aujourd’hui est une course entre les développeurs tâchant de concevoir des programmes de plus en plus nombreux et efficaces, convenant même aux imbéciles, et l’univers essayant de produire des imbéciles de plus en plus nombreux et efficaces.
Jusqu’à présent, c’est l’univers qui gagne.
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 9 requêtes