π
<-

Programmation d'un jeu.

Programmation et implémentation d'algorithmes.

Programmation d'un jeu.

Message non lude KageNoYoru » 26 Sep 2009, 12:26

Voilà, déjà bonjour à vous, je viens d'acquérir une TI-89 Titanium et j'ai déjà fait quelques programmes en TI-Basic (équations chimiques, dichotomie,...). Etant donné que la programmation me plaît et que j'y arrive bien sur des programmes assez faciles à faire voire de niveau intermédiaire, je voudrais me lancer dans la création d'un jeu.
Jusque là, on ne voit pas où est le problème, mais il est assez simple, je l'ai commencé, mon jeu, mais en utilisant les probabilités, et je trouve que cela est trop aléatoire pour un jeu de rôle digne de ce nom... De plus je ne sais pas comment animer les personnages, juste comment intégrer des images...

Mes questions sont donc simples, comment faire une IA en basic?(j'ai quelques bases sur les matrices mais vraiment des bases). Et, comment animer mes personnages?

Si je vous pose ces questions, c'est que j'ai auparavant cherché sur internet (Yaronet,...) et que je n'ai rien trouvé, de plus j'ai trois tonnes de boulot, je suis donc limité en temps pour chercher...

Pourriez-vous m'aider? Ou me donner des bonnes adresses?

Merci d'avance, bonne journée.
Avatar de l’utilisateur
KageNoYoru
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 66.7%
 
Messages: 8
Inscription: 26 Sep 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SI

Re: Programmation d'un jeu.

Message non lude critor » 26 Sep 2009, 13:20

KageNoYoru a écrit:Mes questions sont donc simples, comment faire une IA en basic?(j'ai quelques bases sur les matrices mais vraiment des bases)


La question et peut-être simple, mais elle est très générale, et je ne vais pas te répondre des pages et des pages.

Une vraie IA (avec analyse, apprentissage, expérience et évolution) est difficilement réalisable.

Mais si j'ai bien compris actuellement, tu as donc une boucle dans ton jeu qui dit:
fais quelque chose au hasard

Tu peux donner l'impression d'une IA, en contextualisant cette boucle, et en pondérant chaque action avec du hasard.

Exemple:
si le jeu est dans l'état 1 et rand()0.1
alors fais l'action 1
si le jeu est dans l'état 2 et rand()0.6
alors fais l'action 2


Ici une détection de l'état 1 déclenche l'action 1 associée dans 10% des cas.
Une détection de l'état 2, déclenche l'action 2 dans 60% des cas.


KageNoYoru a écrit:Et, comment animer mes personnages?


La encore la question est vague...


S'il s'agit de déplacer un personnage, il faut le dessiner à un nouvel endroit de l'écran (1 pixel plus haut, 1 pixel plus à gauche...) et effacer l'ancienne position, en redessinant l'arrière-plan.

La méthode du double-buffering peut être intéressant à ce sujet.


S'il s'agit d'animer le personnage pour le représenter dans plusieurs états (marchant vers la gauche, marchant vers la droite, montant une échelle, tombant, marcher vers l'avant, marcher vers l'arrière, sautant...), la TI ne gère pas les images animées.

Tu dois donc avoir plusieurs images de ton personnage, et avec une boucle tu dessines successivement plusieurs images au même endroit, ce qui te donnera ton animation.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 53.4%
 
Messages: 42394
Images: 17112
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Programmation d'un jeu.

Message non lude tama » 26 Sep 2009, 14:03

je rejoins critor, tu poses des questions très générales, une IA est différente d'un jeu à l'autre, tout comme les déplacements, selon ce que tu autorises comme déplacement (marcher, sauter, ramper ... ?)

Il vaudrait mieux que tu présentes ton jeu en question, pis si tu veux faire une IA, p'tet te placer du point de vue du personnage/monstre/autre que tu veux "contrôler" et te demander ce que tu aurais fait selon la situation

En tout cas, bonne continuation, et on veut bien voir certains de tes programmes déjà faits =)
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40%
 
Messages: 10994
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: epita ING3 \o

Re: Programmation d'un jeu.

Message non lude KageNoYoru » 26 Sep 2009, 14:30

Merci pour vos réponses, je n'ai en effet pas été assez précis, désolé. Le but de mon jeu est le contrôle d'un personnage (ninja, samuraï ou cavalier) dans le Japon Féodal, durant les Grandes Guerres Japonnaise, le principe serait d'avancer dans une série de Maps pour tuer le leader ennemi. Ceci est une ébauche bien évidemment pour vous présenter le sujet. L'IA serait une série d'ennemi d'un de ces trois types, à différents niveaux de puissance, je ferais bientôt tout les sprites. Pour l'animation, il pourrait se déplacer vers la droite et la gauche, sauter et se protéger.
Je ne peux malheureusement pas connecter ma TI sur le PC, j'ai un problème avec le cable, c'est pour cela que je ne commence pas à apprendre le C pour l'instant.
Puis-je abuser de votre bonté en vous demandant comment faire un double buffering, serait-ce avec un CyclePic?
Avatar de l’utilisateur
KageNoYoru
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 66.7%
 
Messages: 8
Inscription: 26 Sep 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SI

Re: Programmation d'un jeu.

Message non lude tama » 26 Sep 2009, 15:32

Puis-je abuser de votre bonté ...


ça m'a fait sourire, merci :D



Pour déplacer un personnage (avec les mouvements que tu as décrit) il te faut des variables qui s'occupent de ses coordonnées, et éventuellement du sprite à utiliser (protection, dans quelle direction il regarde ...) puis à chaque déplacement détecté, il faut changer ces variables
Pour le saut ça va être un peu plus compliqué, ça dépend de si tu veux un saut précis ou pas, dans ce cas va falloir mettre un peu ta TI de côté et faire quelques calculs de physique, sinon il existe des formules déjà prêtes pour ça
Enfin, le double buffering consiste à avoir "plusieurs plans" gérés indépendamment, par exemple le plan de devant avec le personnage qui bouge, qui attaque ... et le plan de derrière pour les décors co, éventuellement animés. Malheureusement le TI-Basic est trop lent pour pouvoir faire ça, donc il vaut mieux ne pas y penser pour l'instant et le garder pour éventuellement une version future
Voilà voilà :)
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40%
 
Messages: 10994
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: epita ING3 \o

Re: Programmation d'un jeu.

Message non lude KageNoYoru » 26 Sep 2009, 21:57

De nouveau merci de ces précisions Tama, et c'est tout à fait normal d'être poli envers des gens qui vous aident par pur plaisir, de parler de programmation de TI et d'aider à proprement dit.
Je pense avoir compris que je dois créer une boucle qui incrémente les variables en fonction des touches qui commandent les déplacements, de telle sorte à faire:

Si touche aller à gauche,
Afficher image aller à gauche en décalant d'un pixel,
Afficher image posture normal.

Est-ce bien cela? Quelle fonction permet de décaler l'image, stocker x+1 dans x si x est la variable des abscisses?

Merci d'avance de vos réponses. Bonne soirée.
Avatar de l’utilisateur
KageNoYoru
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 66.7%
 
Messages: 8
Inscription: 26 Sep 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SI

Re: Programmation d'un jeu.

Message non lude LinkWebmaster » 26 Sep 2009, 23:33

Yeah! enfin un post de demande d'aide pour un jeu graphique on calc!
Si tu souhaites faire un jeu style rpg, tu as RPG MAKER Ti (dsl je me fais un peu de pub :#gni#: ) dont la beta devrait sortir dans quelques mois (quand j'aurais un peu moins de boulot)... mais bon vu que c'est pas pour tout de suite je vais me faire un plaisir de t'aider :

Je pense avoir compris que je dois créer une boucle qui incrémente les variables en fonction des touches qui commandent les déplacements, de telle sorte à faire:

Afficher image aller à gauche en décalant d'un pixel,
Afficher image posture normal.


En gros oui c'est ca...mais on calc c'est un peu plus compliqué :

:variable qui enregistre la position verticale du perso
:variable qui enregistre la position horizontale du perso
:affichage perso avec "xorpic" avec les coordonnées définis dans les variables verticale et horizontale
:boucle
:affichage perso avec "xorpic"qui va effacer la premier affichage
:getkey()
:Si touche aller à gauche
:la variable horizontale a -1 (et +1 pour aller à droite)
:si tu veux aller a droite...faut faire de même pour chaque direction
:délai d'attente avec "for"
:on réaffiche le perso avec "xorpic" avec les coordonnées définis dans les variables verticale et horizontale
: on ferme la boucle

- Après il faut définir les limites dans la boucle : si la variable horizontale est inférieure à zéro (ce qui ferait sortir le perso de l'écran) on redéfinit la variable à 0
imaginons que ta variable horizontale s'appelle "a" cela donne :
:if a:1-a
et là ta variable horizontale ne pouvant être inférieur à 1, tu n'as plus de problème de limite d'écran.
tu fais de même pour le haut, la gauche, la droite etc...

- le délai d'attente avec "for" est une astuce pour ralentir le déplacement
exemple : for i,1,100:endfor

Je sais pas si c'est très clair, si tu n'y arrives pas je te ferais un exemple directement traduis en ti basic... mais essaye déjà comme ca.
Malheuresement si tu veux faire ensuite des sprites de qualité sans avoir à tout te taper avec l'éditeur graphique de la calc il va te falloir un cable pour relier au pc (regarde le tuto dans la partie programation)
En plus pour suvegarder tes données puis pour transférer le jeu il te faudra également un cable...

comment faire une IA en basic?(j'ai quelques bases sur les matrices mais vraiment des bases).


là Critor a très bien répondu à ta question... tu peux faire une pseudo IA en utilisant "rand" avec des variables du jeu...
Genre si l'ennemi se trouve à moins de 50 pixels de toi, il a une chance sur deux de te tirer dessus... là c'est faisable. Mais alors, si tu associes en plus les déplacements de ton perso, celui de l'ennemi, la possibilité qu'il tire ... ton rendu on calc va en être ralenti et j'imagine même pas si tu souhaites gérer plus de deux ennemis sur le même écran, je dirais que c'est impossible en ti-basic (mais pas en C)
Et tu n'as pas besoin des matrices pour cela... pas pour le jeu dont tu décris. Utilises les matrices pour gérer tes différentes maps voir pour le placement des ennemis et des items etc...
Image
Avatar de l’utilisateur
LinkWebmaster
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 68.8%
 
Messages: 158
Inscription: 03 Jan 2005, 00:00
Localisation: Projet RPG MAKER Ti
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe:

Re: Programmation d'un jeu.

Message non lude KageNoYoru » 27 Sep 2009, 17:02

Merci beaucoup pour cette réponse complète Linkwebmaster, j'ai de voir ton logiciel, je crois discerner les personnages de l'emblématique Saint Seyia sur ta Bannière, si tu as fais le jeu, tu peux me mettre un lien, je le prendrai dès que j'aurais mon nouveau cordon.
Pour les sprites pas de soucis, je me lance dans dix minutes et ils seront faits ce soir, j'ai des antécédents de Pixel Artiseur...
Je vais mettre en oeuvre ce que viens de m'expliquer d'ici ce soir je pense, mais une autre question me taraude l'esprit, comment faire une barre de vie?
Je pensais utiliser des variables de la même façon:

Afficher barre de vie,
Stocker valeur en abscisse dans une variable,
Si adversaire te touche stocker variable moins 10 dans variable,

Le tout dans une boucle avec limite, mais comment faire le "si adversaire te touche"? Avec un SI variable de distance entre l'adversaire et vous est inférieure ou égale à zéro ET variable de position défensive =0 ET variable d'attaque de l'adversaire =1 ?

Pourriez-vous m'aiguiller?

Merci d'avance.
Avatar de l’utilisateur
KageNoYoru
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 66.7%
 
Messages: 8
Inscription: 26 Sep 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SI

Re: Programmation d'un jeu.

Message non lude LinkWebmaster » 27 Sep 2009, 18:31

de rien ... :;):
si tu as fais le jeu, tu peux me mettre un lien

En farfouillant sur le forum tu devrais trouver des infos qui pourraient t'intéresser et le lien est dispo dans la banque des programmes de ti-bank
comment faire une barre de vie?


Tiens une image est plus parlante que du texte:

Image

tu peux voir trois barres d'état dont 2 correspondent à la vie (notamment sous "mac")
en fait je fais une barre avec un espace vide d'un pixel à l'horizontal qui me permet de mettre le niveau de vie.
J'utilise pxlline pour afficher la ligne de vie. Plus celle ci est basse et plus la ligne diminue.
le code c'est :
pxlline variable de position verticale, variable de position horizontale, variable du début de ligne de vie donc égale à la variable de position verticale+1 (pour placer la ligne dans l'espace vide), la variable de la position horizontale+la variable de vie
voilà
Image
Avatar de l’utilisateur
LinkWebmaster
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 68.8%
 
Messages: 158
Inscription: 03 Jan 2005, 00:00
Localisation: Projet RPG MAKER Ti
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe:

Re: Programmation d'un jeu.

Message non lude KageNoYoru » 27 Sep 2009, 21:05

Merci encore Linkwebmaster, j'ai créé mes deux premiers sprites mais j'ai un problème, je n'arrive pas à assigner les variables que j'ai créées et initialisées en tant que coordonnées de l'image:

-RplcImg mesprgmnmarche1[x,y] ne marche pas pour assigner x et y, j'ai essayé les synthaxes du catalogue de la calculatrice et du manuel, ça ne marche pas... La calculatrice m'affiche: " Ce n'est pas un nom de variable3 et me renvoit au début de la ligne:
-RplcImg mesprgmnmarche1[x,y]

Un p'tit coup pouce supplémentaire? :#roll#:
Avatar de l’utilisateur
KageNoYoru
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 66.7%
 
Messages: 8
Inscription: 26 Sep 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SI

Suivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 3 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1951 utilisateurs:
>1878 invités
>65 membres
>8 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)