Position d'un ennemi aléatoire |
Auteur |
Message |
MrSheepSheep
Autorisation : Membre
Nb de messages : 4
Inscrit le : Dim 25 Nov 2012, 17:19
|
Posté le : Dim 25 Nov 2012, 17:26
|
|
|
Bonjour, je débute en programmation (j'ai fait mon premier programme de Pythagore cette semaine) et je me suis lancé dans un genre de Space Invaders ou l'on contrôle un petit vaisseau spatial. Le but est de tirer sur ses ennemis pour gagner des points. Au fur et à mesure que le temps passe, les ennemis apparaissent de plus en plus vite. Des qu'un ennemi est détruit, il rapporte des points (aléatoirement entre 10 et 20)
Ça, c'est mon idée. Maintenant que j'ai créé le mouvement du vaisseau, je voudrais créer l'apparition des ennemis sur une colonne aléatoire (comprise entre 1 et 16) qui avancent d'une ligne vers le bas toutes les X secondes.
J'ai un peu de mal à trouver les fonctions que je dois utiliser...
Vous pourriez m'aider à faire ce programme ?
Voilà ce que j'ai fait pour l'instant :
("ø"est un "=" barré et ü un "Sto")
Code |
:8üA
:8üC
:Lbl 0
:ClrHome
:Output(8,A,"H
:getKeyüK
:If K=24 and A-1ø0:A-1üA
:If K=26 and A+1ø17:A+1üA
:Goto 0
|
Aussi, je me demande où je vais mettre l'apparition des ennemis sachant que cela doit se passer en même temps que le mouvement...
|
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Lun 26 Nov 2012, 19:30
|
|
|
Bienvenue.
Le nombre aléatoire en lui-même se génrère avec une des fonctions du menu math\prb.
Ce qui te servira sera randInt(A,B) qui génère un aléatoire entier entre A et B.
La méthode de base pour les ennemis serait d'avoir quelques variables pour chaque ennemi.
Par la suite on peut tout stocker dans une liste ou une matrice, mais on n'en est pas encore là.
L'emplacement de la génération de l'ennemi ne laisse pas beaucoup de choix : juste avant les If ou le getKey.
A la limite si les calculs de contrôle des ennemis sont trop lent, tu peux les séparer de l'affichage et placer tous les affichages à proximité des If de déplacement.
----
Voici un tutoriel : http://www.siteduzero.com/tutoriel-3-407892-apprenez-a-programmer-en-ti-basic.html#part_407872
---------------------- 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 |
|
|
|
MrSheepSheep
Autorisation : Membre
Nb de messages : 4
Inscrit le : Dim 25 Nov 2012, 17:19
|
Posté le : Mar 27 Nov 2012, 7:44
|
|
|
J'utilise donc (pour ma ti-82 stats FR) entAleat(0,16) -> A pour la colonne aléatoire, et ensuite il faut les faire descendre en ligne droite...
J'ai modifié le mouvement du vaisseau pour qu'il soit plus net. Le léger clignotement m'agace
Voici le nouveau code :
Code | :8üA
:150üD
:randInt(1,16)üE
:0üF
:ClrHome
:Lbl0
:getKeyüK
:Outpout(8,A,"H
:While 1
:For(Z,0,D
:Outpout (F,E,"V
:If Fø9:F+1üF
:If F=9:randInt(1,16)üE
:End
:End
:If K=24 and A-1ø0
:Then
:ClrHome
:Outpout(8,A,"
:A-1üA
:End
:If K=26 and A+1ø17
:Then
:EffEcr
:Outpout(8,A,"
:A+1üA
:End
:Goto 0 |
Pouvez-vous me dire pourquoi j'obtiens une erreur lors de mon Outpout(F,E,"V") ?
Je pense pourtant avoir donné les deux variables au préalable.
Sinon, merci pour le tutoriel, mais j'en tire déja toutes les informations dont j'ai besoin ^^
|
|
|
|
blg_flg
Autorisation : Membre
Nb de messages : 661
Inscrit le : Mer 23 Mai 2012, 17:28
|
Posté le : Mar 27 Nov 2012, 17:31
|
|
|
Citer : MrSheepSheep | Outpout( |
Outpout...
C'est quel type d'erreur?
|
|
|
|
MrSheepSheep
Autorisation : Membre
Nb de messages : 4
Inscrit le : Dim 25 Nov 2012, 17:19
|
Posté le : Mar 27 Nov 2012, 18:12
|
|
|
Une erreur de type DOMAIN
Je comprends pas pourquoi :/
|
|
|
|
Cytropus
Autorisation : Membre
Nb de messages : 409
Inscrit le : Lun 07 Nov 2011, 12:09
|
Posté le : Mar 27 Nov 2012, 18:27
|
|
|
le entAlét doit être entre 1 et 16
---------------------- Le nouveau site de tout82 |
|
|
|
MrSheepSheep
Autorisation : Membre
Nb de messages : 4
Inscrit le : Dim 25 Nov 2012, 17:19
|
Posté le : Mar 27 Nov 2012, 18:31
|
|
|
Merci de la remarque, j'avais complètement oublié que c'était impossible d'écrire sur la colonne 0 ^^"
En revanche, ca ne change rien. J'ai toujours la même erreur
Peut-être me conseillerez-vous de changer les quelques lignes concernant les ennemis ?
Je rappelle qu'un ennemi apparaît une fois que l'ennemi d'avant est descendu de 2 lignes (1->3 par ex.)
et qu'ils vont assez lentement selon le niveau de difficulté (j'utilise donc for et une variable dont la valeur change en fonction du niveau de difficulté). Mais il faut déja que j'arrive à faire descendre mon ennemi, parce que soit il descend mais la colonne (E) change sans arrêt, soit il ne descend pas !
|
|
|
|
Cytropus
Autorisation : Membre
Nb de messages : 409
Inscrit le : Lun 07 Nov 2011, 12:09
|
Posté le : Mer 28 Nov 2012, 23:08
|
|
|
Tu peut toujours essayer de t'inspirer sur le cubefeild de linka
http://tout82.free.fr/forum/sujet.php?sujet=2084
---------------------- Le nouveau site de tout82 |
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 28 Nov 2012, 23:18
|
|
|
Pour l'instant il y a une seule paire de variables pour tous les ennemis : E et F.
Il faut soit une variable par position (dire "y a un ennemi ici" ou "y a pas d'ennemi") soit quelques variables par ennemis (dire "l'ennemi N est ici").
Cela nécessitera probablement de répéter le code d'ennemi plusieurs fois avec des variables différentes.
J'aurais conseillé (MAIS...*) de ne pas placer la boucle de temporisation autour de la génération d'ennemi, cela déplace l'ennemi plusieurs fois.
*MAIS... cela peut améliorer la fluidité tout en arrivant à tes fins.
Mon idée originale était de placer une temporisation vide entre les générations et le déplacements, puis de diminuer sa durée pour augmenter la difficulté.
A VOIR donc.
Je n'ai pas examiné le code plus en profondeur, au moins pour l'instant.
---------------------- 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 |
|
|
|