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

Langage Delphi Discussion :

Problème de procédure de ramassage de carottes


Sujet :

Langage Delphi

  1. #21
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par User Name Voir le message
    Ben en dessous de ce commentaire je vais devoir réécrire le code avec lequel j'ai un problème, non?
    effectivement...
    et j'imagine que c'est avec ceci que tu positionne tes carottes non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    acar[1] := -1; bcar[1] := -1; ccar[1] := -1;
    for i := 1 to MAX_CAROTTES-1  do
    begin
       acar[i+1] := acar[i] - 1;
       bcar[i+1] := bcar[i];
       ccar[i+1] := ccar[i];
    end;
    Citation Envoyé par User Name
    Edit: J'ai oublié de préciser que j'ai dû demander à la fonction distance de me rendre un glfloat au lieu d'un integer car le cas contraire j'ai:
    bon alors distance() retourne un single... et la constante est defini à 3.0...
    c'est pourtant pas ce que dit ton message d'erreur...

    verifie que distance() est bien comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function distance(i: integer) : single; // ou extended ou glfloat
    begin
      result := Power((a - acar[i]), 2) + Power((b - bcar[i]), 2) + Power((c - ccar[i]), 2);
    end;
    et que la constante est bien 0.0,1.0,2.0 ou 3.0....

  2. #22
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Undeclared identifier Power.
    , ou bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Sqr(x:Extended):Extended;
    begin
      Result := x * x
    end;
    Edit: grillé

  3. #23
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par SpiceGuid Voir le message
    oui , ou bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Sqr(x:Extended):Extended;
    begin
      Result := x * x
    end;
    Ce serait pas un power(x,2) ca?

    un sqr() c'est une racine carré non?

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    bon alors distance() retourne un single... et la constante est defini à 3.0...
    c'est pourtant pas ce que dit ton message d'erreur...

    verifie que distance() est bien comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function distance(i: integer) : single; // ou extended ou glfloat
    begin
      result := Power((a - acar[i]), 2) + Power((b - bcar[i]), 2) + Power((c - ccar[i]), 2);
    end;
    et que la constante est bien 0.0,1.0,2.0 ou 3.0....
    Je viens de vérifier ça, j'ai bien mis que distance retourne un single et j'ai mis en plus les a,b,c en single et j'ai mis le 0 après virgule sur DISTANCE_MIN. Toujours le même message!

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Bon y a juste un truc que je trouve louche:

    a,b et c sont des GLFloat.

    acar, bcar et ccar sont des array of integer.

    Vous ne trouvez pas bizarre qu'il n'y ait rien à ce propos dans distance?
    Comment est-ce que Delphi peut soustraire des integer à des GLFloat alors qu'il n'est pas foutu faire fonctionner ensemble des single et des integer???

  6. #26
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Delphi peut soustraitre des integer et des float sans problème...
    la reponse sera automatiquement des float....
    je crois qu'il nous manque d'autre information pour comprendre
    ce qui se passe....

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Je peux envoyer le .pas à qui me le réclame, mais je vous dis dès maintenant que vous verrez les pires horreurs de votre vie de programmeurs dedans, nous sommes une équipe de super débutants et notre projet est un peu fait à l'arrache...

    Par contre, merci de ne vous attarder que sur le problème évoqué si vous prenez le .pas car on manque de temps pour terminer le projet. Merci.

  8. #28
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    il y a une variable i global définit en single...
    et je n'avais pas définit i en integer dans la fonction...
    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
    Procedure cars;
    Const
      DISTANCE_MIN = 1; //<- ICI A toi de trouver la bonne valeur!
    var
      i:integer;
    Begin
      //== Verifie la distance avec chaqu'une des carottes ==
      For i := 1 To MAX_CAROTTES Do
      Begin
        If distance(i) <= DISTANCE_MIN Then
        Begin
          //Fait monter la carotte
          ccar[i] := ccar[i] + 7;
          //donne un point au joueur
          ate := ate + 1;
          //fait un bruit...
          FSOUND_PlaySound(7, burpsound);
          If ate >= MAX_CAROTTES Then Exit := 1;
        End;
      End;
    End;
    voilà

  9. #29
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    C'est bon ça marche, merci Eric pour ton aide. Seulement un dernier petit problème: Le jeu se referme tout de suite après compilation. Pourquoi?
    Tu pourrais me donner un dernier petit coup de main puisque tu as mon .pas?
    A noter que j'ai effacé cette partie:

    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
    //carottes
    acar[1] := -1; bcar[1] := -1; ccar[1] := -1;
    for i := 1 to 5 do
      begin
       acar[i+1] := acar[i] - 1;
       bcar[i+1] := bcar[i];
       ccar[i+1] := ccar[i];
       if ((a < acar[i] + 1.2) and (a > acar[i] + 0.8) and (b > bcar[i] - 0.2) and (b < bcar[i] + 0.2) and
          (c < ccar[i] + 1.1)) {and (c > ccar[i] - 0.1)} then //YIIIIIIIIIIHAAAA! CAROTTES, CA MARCHE!!!
         begin
            ccar[i] := ccar[i] + 7;
            //ccar[i+1] := ccar[i];
            FSOUND_PlaySound(6,burpsound);
            ate := ate + 1;
           end;
      end;
     
    acar[6] := -3; bcar[1] := 2; ccar[1] := -1;
    for i := 6 to 15 do
      begin
       acar[i+1] := acar[i] - 1;
       bcar[i+1] := 2;
       ccar[i+1] := -1;
       if ((a < acar[i] + 1.2) and (a > acar[i] + 0.8) and (b > bcar[i] - 0.2) and (b < bcar[i] + 0.2) and
          (c < ccar[i] + 1.1)) {and (c > ccar[i] - 0.1)} then //YIIIIIIIIIIHAAAA! CAROTTES, CA MARCHE!!!
           begin
            ccar[i] := ccar[i] + 7;
            //ccar[i+1] := ccar[i];
            FSOUND_PlaySound(6,burpsound);
            ate := ate + 1;
           end;
      end;
    (vers la ligne 616).

  10. #30
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Ca marche!
    En fait il fallait juste que je fasse la distinction entre la boucle principale de jeu et ce que je dois initialiser avant, notamment remplissage_de_tableau.
    Voilà, avec mes remerciements à quelqu'un qui se reconnaitra!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [SQLSERVER]Problème de procédure stockée
    Par mikedavem dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/12/2006, 00h17
  2. Réponses: 1
    Dernier message: 17/07/2006, 17h08
  3. Problème Création Procédure
    Par Yndigos dans le forum Oracle
    Réponses: 6
    Dernier message: 08/07/2006, 09h02
  4. Problème de procédure objet : Migration de TForm vers TFrame
    Par rvzip64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 13/06/2005, 13h44
  5. Problème de procédure stockée
    Par Sorcier157 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 17/03/2005, 17h57

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