Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » Aide pour commencer (49 réponse(s))
./REPRISE DU POST PRECEDENT (post n°38)   Marquer comme non lu.
bobti89 Ecrit le: Jeudi 17 juin 2004 à 09:54 Déconnecté(e)    Voir le profil de bobti89 Envoyer un email à bobti89 Visiter le site WEB de bobti89 Envoyer un message privé à bobti89  

Bah sinon c'est pas drôle de se battre contre si on peut pas gagner.
(Ex : va jouer à un jeu de voiture alors que tu est obligé de perdre #couic# )
bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici
    
./Post n°39   Marquer comme non lu.
Thor Ecrit le: Jeudi 17 juin 2004 à 09:56 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


#gni# le but d'une IA est de te faire progresser donc il faut des niveaux de diffiulté
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°40   Marquer comme non lu.
Benjy Ecrit le: Jeudi 17 juin 2004 à 11:10 Déconnecté(e)    Voir le profil de Benjy Envoyer un email à Benjy Visiter le site WEB de Benjy Envoyer un message privé à Benjy  


ben oui la raquette se depalce bien en meme temps que la balle mais la ratrappe toujour!!!!!
et j'arrive pas a faire que la raquette se debousole car si je la relenti elle ne le ratrappe kasiment plus
Le langage C y'a pas mieux!!!
    
./Post n°41   Marquer comme non lu.
Thor Ecrit le: Jeudi 17 juin 2004 à 11:14 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


C'est normal qu"elle rattrape toujours la balle car je suppose que les raquette sont à droite et à gauche de l'écran donc la largeur est supérieure à la hauteur.
Il faut que la raquette fasse une erreur 1 fois sur 6 par exemple alors tu génère unnombre aléatoire entre 0 et 5 (6 possibilités) et si ce nombre est 5 tu fais aller la raquette à l'inverse de la balle. Voila ma solution
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°42   Marquer comme non lu.
Benjy Ecrit le: Jeudi 17 juin 2004 à 12:39 Déconnecté(e)    Voir le profil de Benjy Envoyer un email à Benjy Visiter le site WEB de Benjy Envoyer un message privé à Benjy  


ok c'est ce que j'ai fait voici le code
#include <tigcclib.h>

unsigned char balle[] =
{0x3C,0x7E,0xFF,0xFF,0xFF,0xFF,0x7E,0x3C};

unsigned short raquette[] =
{0x7FFE,0xFFFF,0xFFFF,0x7FFE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};

void draw(int x, int y) {
  Sprite8(x, y, 8, balle, LCD_MEM, SPRT_XOR);
}
void erase(int x, int y) {
  Sprite8(x, y, 8, balle, LCD_MEM, SPRT_OR);
}
short ran(void)
{
  short r=random (2);
  if (r==0) r=-1;
  return r;
}
void _main(void)
{
  int x=(LCD_WIDTH-1)/2,y=(LCD_HEIGHT-1)/2,F=0,rposx=55,posx=55,r=0;
  short var_hor = ran(), var_ver = ran(),i=0,t=10000;
  INT_HANDLER Intrs [AUTO_INT_COUNT];
  for (F = FIRST_AUTO_INT; F <= LAST_AUTO_INT; F++)
  {
    Intrs [F - FIRST_AUTO_INT] = GetIntVec (AUTO_INT (F));
    SetIntVec (AUTO_INT (F), DUMMY_HANDLER);
  }
  ClrScr ();
  erase(x ,y);
  Sprite16(rposx, 96, 16, raquette, LCD_MEM, SPRT_OR);
  while (!_keytest (RR_ESC))
  {
    draw(x, y);
    Sprite16(rposx, 96, 16, raquette, LCD_MEM, SPRT_XOR);
    Sprite16(posx, 0, 16, raquette, LCD_MEM, SPRT_XOR);
    x+=var_hor; y+=var_ver;

    if(x+8 > LCD_WIDTH-1)
    {
      var_hor = -1;
      x=152;
    }
    else if(y+8 > LCD_HEIGHT-1)
    goto fin;
    else if(x < 0)
    {
      var_hor = 1;
      x=0;
    }
    if(y < 0)
    goto fin;
    //var_ver = 1;

    if(_keytest (RR_UP))
    t-=100;
    else if(_keytest (RR_DOWN))
    t+=100;

    else if(_keytest (RR_LEFT))
    posx-=2;
    else if(_keytest (RR_RIGHT))
    posx+=2;

    r=random (7);
    if(r==2 || r==5)
    rposx=-x;
    else
    rposx=x;
    if(rposx > LCD_WIDTH-16)
    rposx=LCD_WIDTH-16;
    else if(rposx <0)
    rposx=0;

    if(posx > LCD_WIDTH-16)
    posx=LCD_WIDTH-16;
    else if(posx <0)
    posx=0;

    if(y < 4 && y > 0 && x+8 >= posx && x+8 <= posx+20)
    var_ver = 1;
    else if(y+8 > 96 && y+8< 100 && x+8 >= rposx && x+8 <= rposx+20)
    var_ver = -1;

    erase(x ,y);
    Sprite16(posx, 0, 16, raquette, LCD_MEM, SPRT_OR);
    Sprite16(rposx, 96, 16, raquette, LCD_MEM, SPRT_OR);
    for (i=0; i<t; i++);
    clrscr();
  }
fin:
for (F = FIRST_AUTO_INT; F <= LAST_AUTO_INT; F++)
SetIntVec (AUTO_INT (F), Intrs [F - FIRST_AUTO_INT]);
}

mais le probleme c'est que la raquette va trop vite!!! ca me pose un otre probleme commen faire??
Le langage C y'a pas mieux!!!
    
./Post n°43   Marquer comme non lu.
Benjy Ecrit le: Jeudi 17 juin 2004 à 12:57 Déconnecté(e)    Voir le profil de Benjy Envoyer un email à Benjy Visiter le site WEB de Benjy Envoyer un message privé à Benjy  


toujour le meme prob cette IA de m***e
#include <tigcclib.h>

unsigned char balle[] =
{0x3C,0x7E,0xFF,0xFF,0xFF,0xFF,0x7E,0x3C};

unsigned short raquette[] =
{0x7FFE,0xFFFF,0xFFFF,0x7FFE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};

void draw(int x, int y) {
  Sprite8(x, y, 8, balle, LCD_MEM, SPRT_XOR);
}
void erase(int x, int y) {
  Sprite8(x, y, 8, balle, LCD_MEM, SPRT_OR);
}
short ran(void)
{
  short r=random (2);
  if (r==0) r=-1;
  return r;
}
void _main(void)
{
  int x=(LCD_WIDTH-1)/2,y=(LCD_HEIGHT-1)/2,F=0,rposx=55,posx=55,r=0;
  short var_hor = ran(), var_ver = ran(),i=0,t=10000;
  INT_HANDLER Intrs [AUTO_INT_COUNT];
  for (F = FIRST_AUTO_INT; F <= LAST_AUTO_INT; F++)
  {
    Intrs [F - FIRST_AUTO_INT] = GetIntVec (AUTO_INT (F));
    SetIntVec (AUTO_INT (F), DUMMY_HANDLER);
  }
  ClrScr ();
  erase(x ,y);
  Sprite16(rposx, 96, 16, raquette, LCD_MEM, SPRT_OR);
  while (!_keytest (RR_ESC))
  {
    draw(x, y);
    Sprite16(rposx, 96, 16, raquette, LCD_MEM, SPRT_XOR);
    Sprite16(posx, 0, 16, raquette, LCD_MEM, SPRT_XOR);
    x+=var_hor; y+=var_ver;

    if(x+8 > LCD_WIDTH-1)
    {
      var_hor = -1;
      x=152;
    }
    else if(y+8 > LCD_HEIGHT-1)
    goto fin;
    else if(x < 0)
    {
      var_hor = 1;
      x=0;
    }
    if(y < 0)
    goto fin;
    //var_ver = 1;

    if(_keytest (RR_UP))
    t-=100;
    else if(_keytest (RR_DOWN))
    t+=100;

    else if(_keytest (RR_LEFT))
    posx-=2;
    else if(_keytest (RR_RIGHT))
    posx+=2;

    r=random (20);
    if(var_hor==-1)
    {
      rposx-=2;
      if(r==10)
      rposx=x;
    }
    else
    rposx+=2;
    if(r==10)
      rposx=x;

    if(rposx > LCD_WIDTH-16)
    rposx=LCD_WIDTH-16;
    else if(rposx <0)
    rposx=0;

    if(posx > LCD_WIDTH-16)
    posx=LCD_WIDTH-16;
    else if(posx <0)
    posx=0;

    if(y < 4 && y > 0 && x+8 >= posx && x+8 <= posx+20)
    var_ver = 1;
    else if(y+8 > 96 && y+8< 100 && x+8 >= rposx && x+8 <= rposx+20)
    var_ver = -1;

    erase(x ,y);
    Sprite16(posx, 0, 16, raquette, LCD_MEM, SPRT_OR);
    Sprite16(rposx, 96, 16, raquette, LCD_MEM, SPRT_OR);
    for (i=0; i<t; i++);
    clrscr();
  }
fin:
for (F = FIRST_AUTO_INT; F <= LAST_AUTO_INT; F++)
SetIntVec (AUTO_INT (F), Intrs [F - FIRST_AUTO_INT]);
}

cmment ils font dans les otre pong j'ai pas trouve de sources bien :(:(:(:(:(
-Edité le Jeudi 17 juin 2004 à 12:57 par cerede2000-
Le langage C y'a pas mieux!!!
    
./Post n°44   Marquer comme non lu.
Thor Ecrit le: Jeudi 17 juin 2004 à 13:07 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Dans les autres pong ils ne s'embêtent pas car la raquette suit toujours la balle. SI tu veux une sources en voila une
cerede2000 :
mais le probleme c'est que la raquette va trop vite!!! ca me pose un otre probleme commen faire??
Comment ça ça va trop vite?
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°45   Marquer comme non lu.
Ephyx Ecrit le: Jeudi 17 juin 2004 à 14:38 Déconnecté(e)    Voir le profil de Ephyx Envoyer un email à Ephyx Visiter le site WEB de Ephyx Envoyer un message privé à Ephyx  


Voyons voir, si j'étais humain...
Un déplacement de la raquette se ferait avec une accélération vers la balle, puis une décélération, pas extremement préçise, il faut donc rajouter un mouvement d'inertie à la raquette.
Ensuite, j'aurais un temps de réaction, oui, dès que la balle rebondis, la raquette ne change pas immédiatement de direction (inertie + temps de réaction).

Enfin, il faut moduler la vitesse de la balle: si la balle touche la raquette alors que celle ci est lancée à une certaine vitesse, la balle repart plus vite...

Et ainsi de suite, faut se rapprocher de quelque chose de réaliste... :)

Sur que tout ça d'un seul coup ça fait bcp :P
Lemuria & Sirius-B, chouette :D
    
./Post n°46   Marquer comme non lu.
Lionel Debroux Ecrit le: Dimanche 20 juin 2004 à 14:26 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Attention à ce bloc de code:

INT_HANDLER Intrs [AUTO_INT_COUNT];
for (F = FIRST_AUTO_INT; F <= LAST_AUTO_INT; F++)
{
Intrs [F - FIRST_AUTO_INT] = GetIntVec (AUTO_INT (F));
SetIntVec (AUTO_INT (F), DUMMY_HANDLER);
}

Ca ne va pas du tout ! Il suffit de rediriger 1 et 5. Si tu rediriges tout, le clavier, le link, ON, la détection des stack overflows (AI7 qui est la NMI), ça risque d'être bizarre si jamais quoi que ce soit se passe mal...
Lionel Debroux - membre de TICT.
    
./Post n°47   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 20 juin 2004 à 20:07 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Et il ne faut surtout pas rediriger l'AI3, sinon l'horloge s'arrête! Et à coups d'un addq.l #1 et d'un rte par seconde, ce n'est vraiment pas l'AI3 qui va ralentir ou déranger ton jeu.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°48   Marquer comme non lu.
Invité Ecrit le: Dimanche 18 juillet 2004 à 19:31 Déconnecté(e)    
 
bonjours à tous .
j'aimerais savoir si il existe des outils pour travailler directement avec des angles en degrè , ou faut il passer par une convertion obligatoirement ?
    
./Post n°49   Marquer comme non lu.
Sasume Ecrit le: Dimanche 18 juillet 2004 à 19:44 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Il me semble que les fonctions d'AMS travaillent uniquement avec des radians.
Mais la conversion n'est pas si compliquée que ça :
#define RADIAN(alpha) ((alpha)*PI/180)

float a = RADIAN(90);
    
  :: Index » Forum Ti68K » Programmation C » Aide pour commencer (49 réponse(s))
Pages : 3/3     « 1 2 [3] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 49.83ms avec 19 requetes