probleme avec mon serpent - C - Programmation
Marsh Posté le 03-06-2006 à 15:33:37
redrum261 a écrit : j'ai un petit problème [avec] mon serpent |
http://greensboring.com/pod/viagra.gif
A part ça, apprend à regler ton compilateur correctement, ça fait le ménage...
Pour gcc (au minimum) : -Wall -Wextra -O2
exit() est une fonction standard. Ne pas donner le nom 'exit' à une variable. Masquage (shadowing), risque de confusion...
Mise en ordre des données (suppression des globales, contexte, suppression des copies...).
Mise au point de la détection correcte des fleches.
Le serpent s'est animé (ben oui, les variables changent, maintenant...). Par contre, il ne suit pas les regles. Il manque une fifo... Dans 2 directions, il ne bouge pas... Je te laisse mettre ton programme au point. J'espère que tu as compris que
1 - On n'utilise pas de globales mais un contexte.
2 - On ne passe pas de structure à une variable, mais son adresse.
3 - Si une variable doit être modifiée, on passe son adresse.
Nota... La donnée constante 'taille' pourrait être intégrée dans le contexte... Ca ferait un paramètre de moins...
Code :
|
Marsh Posté le 03-06-2006 à 16:19:00
ReplyMarsh Posté le 03-06-2006 à 16:37:56
red faction a écrit : une centaine de lignes de code pour un truc qui pourrait etre fait en 10.... |
En C? Je demande à voir...
Marsh Posté le 03-06-2006 à 18:55:08
ok cetait une facon de parler mais ya quand même beaucoup de code pour pas grand chose
Marsh Posté le 20-06-2006 à 11:21:08
ReplyMarsh Posté le 20-06-2006 à 11:22:27
max0072 a écrit : salut.je voudrai savoir si vous pouvez mettre le code courigé svp. |
Citation : [0C] On ne fait pas le boulot à votre place. |
Marsh Posté le 20-06-2006 à 11:54:09
je voudrai seulement voire la source ,et si tu sais pourquoi hhhhh.j'ai déja programmer un serpent il y a 3 ans quand j'avais 16 ans.toi t'étais en trai de jouer à cache cache.si j'ai demmandé qu'on me le donne je l'ai pas demmandé à toi.tu sais quand tu paurras programmer un rootkit sous unix viens me parler.tu sais rien de moi si tu veux en savoir va dans le site http://www.zone-h.org/index.php?op [...] 3&filter=1 et tu saurras à qui t'as affaire.et salut à tout les autres.
si je réspectais pas l'objectif de ce forum il ne sera plus disponible.dommage que les mec comme toi existe encore
Marsh Posté le 20-06-2006 à 11:57:34
oho un warlordz
Apprend à écrire et reviens ensuite stp, tu me fais mal aux yeux.
Citation : dommage que les mec comme toi existe encore |
Marsh Posté le 20-06-2006 à 12:14:51
tu te croix en train de me fouttre la rage hhhhh,tu viens de me prouver que t'es qu'un salop
tu sais que tu dis nimporte quoi et que tu me fais pitié, tu nas aucun savoir en informatique un vrai nul comme toi ne peut rien faire dans cette vie que de dire nimporte quoi
je peux pas perdre du temps avec un idiot comme toi,jai autres choses à faire,
et en ce qui concerne mon écriture je ne suis pas en train décrire à quelquun que je respecte
je ne le fais quun à un idiot un seul idiot cest toi,alors je men fou jécris comme je veux
(tous mes respects aux autres)
Marsh Posté le 20-06-2006 à 12:17:19
Allez, va rendre le pécé de ton papa !
Au revoir
Marsh Posté le 20-06-2006 à 13:09:52
max0072 a écrit : et en ce qui concerne mon écriture je ne suis pas en train décrire à quelquun que je respecte |
Marsh Posté le 20-06-2006 à 13:11:51
Je dirais même plus : hhhhh
Marsh Posté le 20-06-2006 à 13:13:47
Encore un qui a suivi tous les conseils de TroU du CUlz
so
Spoiler : |
Marsh Posté le 20-06-2006 à 13:16:46
allez hop, ban à durée indéterminée
Marsh Posté le 20-06-2006 à 13:18:30
je laisse ouvert pour que redrum261 puisse poser des questions, évitez de polluer svp
Marsh Posté le 20-06-2006 à 13:29:52
MDR qu'est ce qu on rigole ici, j'adore le coup du salop, mais j'ai pas compris pouquoi l'avoir placé ici ! Un fou ce gars !
Marsh Posté le 03-06-2006 à 15:25:13
j'ai un petit problème de programmation de mon serpent voici le code.... Si quelqu'un pouvait maider à comprndre pourquoi il n'avance pas ...
Merci d'avance
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define GAUCHE 75
#define DROITE 77
#define HAUT 72
#define BAS 80
#define ESC 27
/*============================================================================*/
/* Variables globales */
/*============================================================================*/
int vitesse = 90;
int Niv[80][23];
int score = 0; //score à 0
int taille = 3;
int nb_pomme=0;//nb de pommes mangées
int sens;
/*============================================================================*/
/* Structure */
/*============================================================================*/
typedef struct {
int x; //coordonnées en x
int y; //coordonnées en y
}Coord;
/*============================================================================*/
/* Affichage et interface */
/*============================================================================*/
void efface_menu()
{
int i;
gotoxy(1,1);
for(i=1; i<79; i++)
printf(" " );
}
void message(char* mess1)
{
gotoxy(50,1);
printf("%s",mess1);
getch();
}
void gameOver()
{
message("===== GAME OVER =====" );
}
int affiche(int taille, Coord p, Coord snak[], int score,int nb_pomme, Coord s)
{
int i, j, t, h;
//si snake mange sa queue
for(i = 2; i < taille; i++)
{
if(snak[0].x == snak[i].x && snak[0].y == snak[i].y)
{
gameOver();
exit(0);
return 0;
}
}
//teste les collisions avec des paroies
for(i=2; i<23; i++)
{
for(j=0; j<80; j++)
{
if(Niv[j][i]==1)
{
if(snak[0].x==(j+1) && snak[0].y==(i+3))
{
gameOver();
exit(0);
return 0;
}
}
}
}
//dessine le snake
for(i = 0; i < taille; i++)
{
gotoxy(snak[i].x, snak[i].y);
if(i == 0)
{
printf("\x2" ); //dessine la tête
}
if(i !=0 && i<taille)
{
printf("\xf" ); //dessine le corps
}
}
//dessine le score, le record, le nombre de pommes mangées
gotoxy(1, 2);
for(i = 0; i < 80; i++)
printf("\xC4" );
gotoxy(2,1);
printf(" Score: %d|", score);
printf(" Pomme(s): %d|", nb_pomme);
return 1;
}
/*============================================================================*/
/* Moteur du jeu */
/*============================================================================*/
void cherche_pomme(Coord snak[], Coord p, int taille)
{
int x, y, i, j;
int exit, ind;
do
{
exit = 1;
x = (rand() % 79) + 1;
y = (rand() % 22) + 1;
ind = 0;
//verifie si la pomme n'est pas ds le serpent
while(ind <= taille && exit)
{
if(x == snak[ind].x && y == snak[ind].y)
exit = 0;
ind++;
}
//verifie si la pomme n'est pas ds le mur
for(i=2; i<22; i++)
{
for(j=0; j<79; j++)
{
if(x==(j+1) && y==(i+3))
exit=0;
}
if(!exit) break;
}
if(!exit) break;
}
while(! exit);
p.x = x;
p.y = y;
//dessine la pomme
gotoxy(p.x, p.y);
printf("\x9d" );
}
void initialisationJeu(Coord snak[], Coord s, Coord p, int taille)
{
int i;
clrscr();
cherche_pomme(snak, p, taille);
//initialisation du snake
s.x = 10, s.y = 10;
snak[0].x = s.x;
snak[0].y = s.y;
for(i = 1; i < taille; i++)
{
snak[i].x = s.x -i ;
snak[i].y = s.y ;
}
sens = DROITE;
}
//fonction qui gere le jeu
void jeu()
{
Coord snak[1000];//coord du snake
Coord p;//coord de la pomme
Coord s;//coord de la tete du snake
char c;
int exit = 0, v, m, i;
message("===== PRET? =====" );
initialisationJeu( snak, s, p, taille);
//grande boucle du jeu
do
{
affiche( taille, p, snak, score, nb_pomme, s);
//qd on frappe pas de touches
if(!kbhit())
{
//si le snake mange la pomme
if(snak[0].x == p.x && snak[0].y == p.y)
{
gotoxy(p.x, p.y);
printf(" " );
score = (score+5);
taille = (taille+1);
nb_pomme =(nb_pomme+1);
cherche_pomme(snak, p, taille);
affiche( taille, p, snak, score, nb_pomme, s);
}
//deplace le snake dans telle direction
switch(sens)
{
case HAUT:
snak[0].x = s.x;
snak[0].y = s.y--;
case BAS:
snak[0].x = s.x;
snak[0].y = s.y++;
case GAUCHE:
snak[0].x = s.x--;
snak[0].y = s.y;
case DROITE:
snak[0].x = s.x++;
snak[0].y = s.y;
}
Sleep(120);
affiche( taille, p, snak, score, nb_pomme, s);
}
//qd on frappe une touche
if(kbhit())
{
c=getch();
switch(c)
{
case 'd' : if(sens!=GAUCHE){
s.x++ ;
sens=DROITE;
}else s.x-- ; break;
case 'q' : if(sens!=DROITE){
s.x-- ;
sens=GAUCHE;
}else s.x++ ; break;
case 's' : if(sens!=HAUT){
s.y++ ;
sens=BAS;
}else s.y-- ; break;
case 'z' : if(sens!=BAS){
s.y-- ;
sens=HAUT;
}else s.y++ ; break;
case 'p' : getch() ; break;
}
}
}
while(!exit);
}
/*============================================================================*/
/* FONCTION PRINCIPALE */
/*============================================================================*/
int main()
{
system("title SNAKE 2006 par redrum261" );
jeu();
return 0;
}