Bnjour.
Je souhaiterais apprendre la programmation et je me suis dit que je devrais commencer en basic.
J'ai donc décidé de faire un jeu de labyrinthe en fausse 3D dans lequel il faudrait trouver des clefs pour sortir.
Le problème c'est que pour l'instant, je n'y connait rien, je me doute bien que d'autre jeux comme ça en déjà été réalisé mais j'ai décidé de ne pas aller voir des codes déjà existant.
Je vais donc avoir besoin d'aide et de conseils dans la réalisation de ce jeu.
Je remerci d'avance toutes les personnes qui voudront bien me donner des idées.
Essaie de trouver des tutoriels sur la programmation en TI-BASIC et lis ton manuel.
Ce n'est pas une mauvaise idée également de jeter un coup d'oeil sur des sources existantes, si elles sont bien codées ça peut t'apporter beaucoup.
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Tu ne peux pas vraiment optimiser à ce niveau.
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Zeph Le 23/03/2006 à 02:06 Mouais, même conseils que d'habitude, si tu veux apprendre la programmation j'aurais plutot tendance à te conseiller de commencer par le basic, au moins tu peux te familiariser ac les notions de base sans risque. Commencer la prog par le C c'est risquer de faire bcp de conneries et se rajouter des tas de complications qui n'ont rien a voir avec la programmation mais qui ne sont que des contraintes du langage.
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Merci pour vos réponses.
Je ne vais pas optimiser la taille des matrices car une matrice de 20*20 (largement suffisante pour se perdre) pèse très peu.
En revanche, faire balader un point sur un laby vu de dessus, c'est simple il suffit de tester les cases autour pour pas rentrer dans les murs. Mais lorsque on est en vue 3d il faut définir une orientation à la caméra (nord sud est ouest) et l'on se retrouve du coup avec 4 parties du programme qui calcule la même chose, mais de manière différentes.
Comment faire pour tout regrouper en un seul morceau?
J'ai réussi à grouper les orientations Nord-Sud et Est-Ouest mais pour grouper le tout, il faudrait trouver un moyen pour passer de mat[a,b] à mat[b,a].
Devrais-je à chaque fois mettre a dans b et b dans a?
Cela prendrait autant de place que de faire 2 parties indépendantes.
ps: je comprends que sans voir le code vous ayez du mal à comprendre, je vais donc bientôt mettre en ligne le coeur du programme.
J'ai retapé sur l'ordinateur la partie du programme qui permet d'afficher le contenu de la matrice mat comme si l'on était dedans.
Je ne sais pas si vous comprendrez les dessins que cela donne.
Vous devez savoir aussi que 1 bloc sur 4 est plein dans la matrice, un peu comme cela:
111111111
100000001
101010101
100000001
101010101
100000001
111111111
Bon sinon por ceux qui veulent m'aider à optimiser mon code, voilà le programme:
1->d (orientation vers le haut)
20->a (emplacement de départ sur la matrice au coin en bas à droite)
20->b
Loop (boucle infini)
If d=1 or d=2 Then
Clrdraw
If d=1:1->e
If d=2:-1->e
If mat[a,b-e]=1 Then
Dessiner un mur à gauche
Else
Dessiner un mur "plat" (de face)
EndIf
If mat[a,b+e]=1 Then
Dessiner un mur à droite
Else
Dessiner un mur "plat" (de face)
EndIf
If mat[a-e,b]=1 Then
Dessiner un mur de face au milieu
EndIf
0->k
While k=0
getkey()->k
EndWhile
If d=1 then
If k=haut and mat[a-1,b]=0:a-1->a
If k=bas and mat[a+1,b]=0:a-1->a
If k=gauche:4->d
If k=droite:3->d
Else
If k=haut and mat[a+1,b]=0:a+1->a
If k=bas and mat[a-1,b]=0:a-1->a
If k=gauche:3->d
If K=droite:4->d
EndIf
EndIf
If d=3 or d=4 Then
Clrdraw
If d=3:1->e
If d=4:-1->e
If mat[a-e,b]=1 Then
Dessiner un mur à gauche
Else
Dessiner un mur "plat" (de face)
EndIf
If mat[a+e,b]=1 Then
Dessiner un mur à droite
Else
Dessiner un mur "plat" (de face)
EndIf
If mat[a,b+e]=1 Then
Dessiner un mur de face au milieu
EndIf
0->k
While k=0
getkey()->k
EndWhile
If d=3 then
If k=haut and mat[a,b+1]=0:b+1->b
If k=bas and mat[a,b-1]=0:b-1->b
If k=gauche:1->d
If k=droite:2->d
Else
If k=haut and mat[a,b-1]=0:b-1->b
If k=bas and mat[a,b+1]=0:b+1->b
If k=gauche:2->d
If K=droite:1->d
EndIf
EndIf
dal Le 24/03/2006 à 11:19 LinkWebmaster> Le systeme que tu as utilise gere tous les cas possible de piece (Par exemple, piece avec un acces en bas a droite et en haut a gauche, ou une piece avec 3 ou 4 acces)?
Non, pour spy vs spy il n'y a que 8 pièces dont j ai attribué un numéro à celles ci et chaque déplacement est défini. Mais si je devais programmé un labyrinthe il est vrai que l utilisation d'une matrice est ce qu il y a de préférable.
Oui je pense que tu devrais définir un élément de la matrice avec un numéro
le numéro 1 correspondrait à une pièce avec un seul acces en haut par exemple
le numéro 2 un seul acces en bas et ainsi de suite pour tous les cas de figure
ainsi tu pourras meme intégrer des pièces avec des éléments particuliers genre une oubliette sans oublier un acces d'entrée et de sortie, bref...
Je peux te programmer le départ de ton programme labyrinthe avec une matrice si tu veux...
naPO> il n y a qu'une dizaine de meuble donc avec une variable pour chacun d'eux c'est tout a fait gérable. Il y a trois items repartis aléatoirement a chaque partie "sous les meubles" ensuite j ai reintégrer une variable avec une option pour piéger les meubles. A chaque tour tu as le droit a trois déplacements. Tu peux piéger un meuble pour que ton adversaire meurt et gagner ainsi des déplacements en plus...enfin j ai intégrer pas mal de petites règles comme ca pour rendre le jeu un peu plus fun
Je n'ai pas très bien compris, peu vois tu tes salles sous n'importe quel angle?
Car mon labyrinthe n'a pas du tout la même forme je vous aurais bien montré mais je ne sais pas mettre d'image sur ce forum.
Comment fait on?
une idee comme-ca pour reduire la taille des donnes du decor pour les murs :
Au lieu d'une matrix utilise une chaine de caractere ou tu stocke tes murs.
Reste a voir si c'est aussi rapide pour recuperer les valeurs.
Exemple :
"111111111
100000001
101010101
100000001
101010101
100000001
111111111"->data
si tu connais l'index de la ligne et de la colonne tu peux recuperer ton code en faisant :
ord( mid( data, nbr_col * (num_row - 1) + num_col, 1 ) ) - ord("0")
Bien sur tu precalcule ord("0") pour en connaitre la valeur histoire d'eviter une operation inutile.
Mais bon ce sera surement plus lent que les MATRIX je pense ; rien ne t'empeche de tester.
dal Le 26/03/2006 à 17:51 Ou peut-etre en stockant une chaine de caractere par ligne et en mettant le tout dans une liste:
{ "111111111", "100000001", ... , "111111111"}_>data et en recuperant les valeurs avec:
expr(mid(data[num_row],num_col,1))
si expr() n'est pas trop lent.