fonctions aléatoires et variables - C - Programmation
Marsh Posté le 20-01-2008 à 14:55:06
Pour le second problème, celui du mélange aléatoire, vous serez peut-être intéressé par les "suffling algorithms", voir http://en.wikipedia.org/wiki/Shuffle
N.B. Pour ue meilleure lisibilité, est-ce que vous pourriez utiliser une lettre majuscule au début de chaque phrase ? C'est un peu fastidieux au début, mais c'est juste une habitude à prendre. Vous verrez on s'y fait très vite.
Marsh Posté le 20-01-2008 à 16:46:37
Bonjour,
le premier problème, ne peux pas en être un :
- il faut créer une fonction de "construction" de plateau
- ensuite elle prend soit :
* un paramètre "nombre de cases"
* soit va chercher ce paramètre dans une variable statique (via une fonction get_size_plateau() qui aura été initialisée avec la taille donnée par le joueur
D'ailleurs pour ne pas changer ton code, il est possible de faire un
Code :
|
cordialement
Marsh Posté le 20-01-2008 à 18:08:37
Merc olivthill ... je prenderai la peine de mettre des majuscules pr la prochaine fois ... c'est juste que je suis encore novice sur les forums
Merci aussi à dreamedeath, mais c 'est juste que je ne comprends pas vraiment l'interet du get_size
Je dispose d'un PANEL principal ds lequel son disposé deux CANVAS
Voici comment je dessine la grille sur mon CANVAS à l'aide d une fonction que j'ai appelé dessineGrille( int canvas)
void dessineGrille(int canvas)
{
int i;
for( j=0; j<NBCASESCOTE ; j++)
{
for ( i=0 ; i< NBCASESCOTE ; i++)
{
SetCtrlAttribute (panelHandle,
canvas,ATTR_PEN_COLOR,VAL_RED);
CanvasDrawRect(panelHandle,canvas,MakeRect(i*NBPIX,j*NBPIX,NBPIX,NBPIX),VAL_DRAW_FRAME);
}
}
}
Ici NBPIX est la taille mon caréé,
Je ne comprends pas en quoi ajouter NBCASESCOTE en tps que parametre de ma fonction change t il quelque chose ?
Peux tu m'eclairer dreameddeath ?
Marsh Posté le 20-01-2008 à 19:08:13
bah en fait il faut remplacer ton NBCASESCOTE soit en faisant appel au parametre de la fonction
Code :
|
bah en fait il faut remplacer ton NBCASESCOTE soit en faisant appel au parametre de la fonction
Code :
|
Mais le problème est que si il y de nombreux endroit où tu as à récupérer la valeur ça peut être compliqué/long.
Sinon il faut de faire un .c/.h avec dans le header, qqch du style
Code :
|
et dans le .c
Code :
|
Voilà voilà j'espère que c'est plus clair.
Ya plus qu'a compiler le tout en modifiant ton makefile
Marsh Posté le 20-01-2008 à 20:15:38
Que dire de plus ... ben merci bcp c'est tres claire comme ça !
Le NBCASESCOTE j'y fais appel que ds 3 fonctions ca ne devrait pas etre tres dure à remplacer ss toucher au header
Etant donné que je ne dispose pas de mon projet entre les main, je ne peux pas te confirmer si ça marche ou pas
Pourtant si j'emploie cet methode un petit probleme persiste, supposons que l utilisateur entre une valeur par exple 45 !
Dans mon programme je dispose d un tableau de couleur et d'un fichier text ( eux deux statiques ) que je scan a l aide d un fscanf ou son repertorié mes couleurs
Par exple :
fichier.txt de la forme :
1,3,4,3
2,2,1,1
3,1,2,0
... etc ( le fichier text contient 25 lignes si NBCASESCOTE=5 chaque ligne contient les 4 couleurs de la piece associée)
-la premiere case contiedra la couleur
*1 au nord,
*3 a l est
*3 au sud
*4 au est
et ainsi de suite pr la seconde case !
Donc si je ne crée pas tout les fichier text correspondant ... j'ai le risque de faire bugger mon application.
Serait il possible de forcer l'utilisateur à entrer 3 valeur au maximum par exple NBCASESCOTE=5 ou 6 ou 7 . Ainsi je crée mes 3 fichiers texts correspondants.
Une derniere chose aucune idée concernant la fonction aléatoire, qui fairait permuter les lignes de mon fichier text, ou une permutation circulaire : par exple : 1,2,3,0 par 2,3,0,1 ou 0,1,2,3 .... ???
Merci bcp pr l aide que tu m as apporté !
Marsh Posté le 20-01-2008 à 20:18:46
petite correction :
-la premiere case contiedra la couleur
*1 au nord,
*3 a l est
*4 au sud
*3 au est
Marsh Posté le 20-01-2008 à 22:22:50
Bah juste après la conversion, tu n'as qu'à vérifier que le nombre entré est bon
Code :
|
Voilà,voilà
PS: j'espère que l'on ne va pas m'étriper pour la manière dont je fais la lecture du chiffre. M'en veuillez pas je ne suis pas un expert en C, je suis ouvert à toute correction.
PPS : j'ai rien compilé, c'est du "réponse rapide"...
Marsh Posté le 21-01-2008 à 00:01:10
Question probablement tres bete mais pourquoi avoir fait appel a un tableau de caractere ?
Serait il faut de faire tout simplement :
if(size_cote <5 || size_cote > 7){
printf(Valeur incorrecte (doit être un entier compris entre 5 et 7)\n" );}
Que fait la fonction read ds ton programme ?
Désolé d etre un peu rebarbatif ...
Merci d avance
Marsh Posté le 22-01-2008 à 18:42:32
Bonjour,
Apres avoir testé le : #define NBCASESCOTE get_size_cote()
Ca ne marche pas, le message d erreur est le suivant : missing prototyp, argument must be constant
Comment puis je faire une alocation dynamique sur NBCASESCOTE alors ???
Merci d'avance
Cordialement,
Marsh Posté le 20-01-2008 à 14:03:06
Bonjour,
je suis en train de programmer en language C, le jeu eternity II pour mon projet en informatique !
j'aurai besoin de votre aide concernant deux problemes que j'ai eu l'occasion et la male chance de ne pas savoir resoudre !!!! :s
mon 1er probleme est le suivant :
pour tout ceux que connaissent ce jeux eternity est composé de deux plateaux de jeu l un contenant une reserve de piece l autre le plateau de jeu !!!! chaque plateau est subdivisé en petits carés eux meme decomposés en triangles.
La nombre de case contenu ds chaque plateau est donné par une variable #define nbcase 5
j ai utilisé un define car mon prog contennait bcp de tableau il m'était impossible de les definir en variables globals !
ds le but d ameliorer mon jeu j aimerai pouvoir modifier le niveau de jeux notament en changean nbcase par 7 ou 8 ....et cela par l utilisateur en lui demandan de saisir le niveau de jeu exple simple intermediare dur .....
( utiliser un scanf m est impossible avec des define )
de quel maniere dois je m y prendre ????? ( je travaille sur CVI )
Mon second probleme vien egalement de ce jeu ...
j aimerai pouvoir generer une fonction aleatoire qui melangerait le jeux a chanque demarrage ....
sachant que je dispose d une fontion qui permet de tourner les pieces, et que les positions initials de mes pieces sont donnée par un fichie text. qui contient des nombre auquel j atribue des couleur avec mon prog !!!
je m excuse pr la seconde question qui est tres flou ds sa formulation mais sa me parrait vraiment assez dur a expliquer ...
si mon prog vous est necessaire n hesitez pas a me le demander !!
je vous remercie d avoir pris la peine de me lire !
Merci d avance !