IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

banc de poissons


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Par défaut banc de poissons
    Bonjour à tous !
    J'ai eu une idée : de faire un programme modélisant (au moins grossièrement) un banc de poissons : avec plusieurs poissons (pixels) et un pixel que l'on peut faire bouger sur tout l'écran (je l'appelle pointeur).
    En fait je programme sur TI mais je ne me suis mis au C que depuis quelques semaines : j'ai déjà réalisé ce programme en basic mais j'ai abandonné le projet à cause de la vitesse...

    Le principe est le suivant :

    Si un poisson détecte le pointeur à une certaine distance, définissable, il s'en éloigne jusqu'à être au delà de cette distance.
    Le groupe de poissons se forme de cette façon : chacun va en direction du poisson le plus proche et s'arrête à une distance définissable aussi.

    Je ne sais pas si je suis très clair, aussi je joins le code que j'ai élaboré (pour l'instant, il n'y a qu'un seul poisson). Il comporte une erreur, le problème c'est que je ne sais pas laquelle. Si quelqu'un pouvait m'aider à la trouver, ainsi que pour la suite du programme...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    short xa,ya,xta,yta,yy,xx,y,x,yt,xt;          /* Variables de déplacement */
    char get;                                     /* Variable de test clavier */
    short cy,cx,tecom;                            /* Variables de comptage    */
     
    moduldep()                                    /* Fonction de déplacement  */
    {                                             /* du pointeur              */
    get=ngetchx();
    if((get==81)&&(y>2))
    	y-=2;
    if((get==82)&&(x>2))
    	x-=2;
    if((get==84)&&(y<98))
    	y+=2;
    if((get==88)&&(x<158))
    	x+=2;
    }
     
    bacomp()                                      /* Fonction de comptage des */
    {                                             /* distances                */
    cy=ya-y;
    cx=xa-x;
    if((cy<=10)&&(cx<=10))
    {
    	tecom=1;
    	if(cy<0)
    	{
    		if(ya<99)
    			ya++;
    	}
    	else
    	{
    		if(ya>1)
    			ya--;
    	}
     
    	if(cx<0)
    	{
    		if(xa<159)
    			xa++;
    	}
    	else
    	{
    		if(xa>1)
    			xa--;
    	}
    }
    else
    tecom=0;
    }
     
    // Main Function
    void _main(void)
    {
    clrscr();
    xa=xta=79;
    ya=yta=49;
    x=y=xt=yt=1;
    DrawPix(xa,ya,A_NORMAL);
    DrawPix(x,y,A_NORMAL);
     
    dep:
    moduldep();
    DrawPix(x,y,A_XOR);
    DrawPix(xt,yt,A_XOR);
    yt=y;
    xt=x;
     
    ba:
    bacomp();
    if (get=8)
    	goto zzz;
    if(tecom)
    {
    	DrawPix(xa,ya,A_XOR);
    	DrawPix(xta,yta,A_XOR);
    	yta=ya;
    	xta=xa;
    	goto ba;
    }
    goto dep;
    zzz:
    }

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par virgiledu95
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // Main Function
    void _main(void)
    {
    clrscr();
    xa=xta=79;
    ya=yta=49;
    x=y=xt=yt=1;
    DrawPix(xa,ya,A_NORMAL);
    DrawPix(x,y,A_NORMAL);
     
    dep:
    moduldep();
    DrawPix(x,y,A_XOR);
    DrawPix(xt,yt,A_XOR);
    yt=y;
    xt=x;
     
    ba:
    bacomp();
    if (get=8)
        goto zzz;
    if(tecom)
    {
        DrawPix(xa,ya,A_XOR);
        DrawPix(xta,yta,A_XOR);
        yta=ya;
        xta=xa;
        goto ba;
    }
    goto dep;
    zzz:
    }
    Un Force 10 comme ça, d'entrée de jeu. Bravo!

    http://emmanuel-delahaye.developpez.com/goret.htm

  3. #3
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Yeah terrible ton echelle.
    Desormais quand je ferai un code, je me baserai sur ca pour faire un code goret level 0. ^^

    Je trouve quand meme l'echelle un peu dure, mais ce n'est que mon avis.

    Echelle 8 : plus qu'un return par fonction

    J'ai deja vu des codes a toi avec plusieurs return...

  4. #4
    Membre averti
    Inscrit en
    Février 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 70
    Par défaut
    l'expression 'comme un goret' signifie 'salement', 'de façon crade' etc.
    Un code peut être crade et efficace à la fois...

  5. #5
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Mais un code illisible est bon pour la poubelle

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Par défaut
    je n'arrive pas à savoir quel est le niveau le pire et le mieux... parce que je ne sais pas si je dois prendre cette remarque comme un compliment ou comme une critique... et si c'est une critique merci d'argumenter

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Le pire c'est le Force 10...

    Et pourquoi ben parce que y'a des goto dans tous les sens, tout est dans le main, ya des variables globales en pagaille, pas d'indentation...

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Ton code est très mauvais, et regroupe une bonne partie de ce qu'il ne faut absolument pas faire en C.
    Mais tu es débutant, tu as programmé sur ta calculette en basic à coup de goto donc celà ne peut donner que de mauvais résultats.
    Donc, avant de te lancer dans un programme, apprends l'algorithmique sérieusement, ouvre un bon bouquin de C (pas ceux de Delannoy ) et mets toi au boulot.
    Reviens dans quelques temps nous montrer un code un peu plus correct (tu te demanderas alors comment tu as pu écrire de telles horreurs) et on sera là pour résoudre tes problèmes.
    Bon courage
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Optimisation par les PSO (les bancs de poissons)
    Par takfa2008 dans le forum Intelligence artificielle
    Réponses: 3
    Dernier message: 14/05/2009, 11h36
  2. Réponses: 4
    Dernier message: 18/01/2007, 13h48
  3. Poisson en 3D, difficile ?
    Par mims1664 dans le forum Flash
    Réponses: 10
    Dernier message: 11/08/2006, 17h59
  4. [Conseil] Banc de tests ?
    Par MonsieurAk dans le forum Test
    Réponses: 7
    Dernier message: 24/11/2005, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo