Poster un nouveau sujet Poster une réponse
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   Citer 

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

 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 : Lun 26 Nov 2012, 19:30   Citer 

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
 Adresse email Haut de page Bas de page 
 
MrSheepSheep



Autorisation : Membre
Nb de messages : 4
Inscrit le : Dim 25 Nov 2012, 17:19
Posté le : Mar 27 Nov 2012, 7:44   Citer 

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 crazy.gif

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

 Adresse email Haut de page Bas de page 
 
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 


Citer : MrSheepSheep
Outpout(



Outpout... karate.gif


C'est quel type d'erreur?

 Adresse email Haut de page Bas de page 
 
MrSheepSheep



Autorisation : Membre
Nb de messages : 4
Inscrit le : Dim 25 Nov 2012, 17:19
Posté le : Mar 27 Nov 2012, 18:12   Citer 

Une erreur de type DOMAIN
Je comprends pas pourquoi :/

 Adresse email Haut de page Bas de page 
 
Cytropus



Autorisation : Membre
Nb de messages : 409
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Mar 27 Nov 2012, 18:27   Citer 

le entAlét doit être entre 1 et 16 glasses.gif

----------------------
Le nouveau site de tout82
 Adresse email Haut de page Bas de page 
 
MrSheepSheep



Autorisation : Membre
Nb de messages : 4
Inscrit le : Dim 25 Nov 2012, 17:19
Posté le : Mar 27 Nov 2012, 18:31   Citer 

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 sad.gif
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 !

 Adresse email Haut de page Bas de page 
 
Cytropus



Autorisation : Membre
Nb de messages : 409
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Mer 28 Nov 2012, 23:08   Citer 

Tu peut toujours essayer de t'inspirer sur le cubefeild de linka eyeonly.gif
http://tout82.free.fr/forum/sujet.php?sujet=2084

----------------------
Le nouveau site de tout82
 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 : Mer 28 Nov 2012, 23:18   Citer 

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