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 » Pong (33 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
willyFFfan Ecrit le: Vendredi 1er juillet 2005 à 23:09 Déconnecté(e)    Voir le profil de willyFFfan Envoyer un email à willyFFfan Visiter le site WEB de willyFFfan Envoyer un message privé à willyFFfan  

Voilà j'ai décidé d'apprendre le C... #arf#
Donc voila mon 1er jeu : pong
http://total-ti89.ifrance.com/pong.gif

Voici le code source, ca serait bien si vous pourriez me donner quelques conseils...


// C Source File
// Created 01/07/2005; 14:28:27
#include <tigcclib.h>
#include "sprites.h"

// Main Function

void _main(void)
{
  INT_HANDLER oldai1=GetIntVec(AUTO_INT_1);
  SetIntVec(AUTO_INT_1,DUMMY_HANDLER);
  INT_HANDLER oldai5=GetIntVec(AUTO_INT_5);
  SetIntVec(AUTO_INT_5,DUMMY_HANDLER);
  //Score des joueurs initialement
  short scoreIA=0;
  short scoreJ=0;
  debut:
  randomize();
  clrscr();
  //définition des position initiales
  short n=0;
  short ralenti=0;
  short y=0;
  y=rand()%92;
  short x=3;
  short yIA=0;
  yIA=rand()%92;
  short xb=rand()%2;
  if (xb==0)
  xb=-1;
  short yb=rand()%2;
  if (yb==0)
  yb=-1;
  short xballe=0;
  short yballe=0;
  xballe=(rand()%60)+50;
  yballe=(rand()%40)+30;
  char buffer[10];
  do
  {
    sprintf(buffer,"%i",scoreJ);
    DrawStr (75,2,buffer,A_NORMAL);
    sprintf(buffer,"%i",scoreIA);
    DrawStr (85,2,buffer,A_NORMAL);
    //ralentissement du jeu
    for(ralenti=0 ; ralenti<7500 ; ralenti++)
      {
      }
    //Mouvement de la balle
    Sprite8(xballe,yballe,8,balle,LCD_MEM,SPRT_XOR);
    xballe=xballe+xb;
    yballe=yballe+yb;
    if(yballe==1||yballe==93)
    yb=-yb;
    //Mouvement du joueur
    if(_keytest(RR_UP) && y>1)
    {
      Sprite8(x,y,8,raq,LCD_MEM,SPRT_XOR);
      y--;  
    }
    if(_keytest(RR_DOWN) && y<91)
    {
      Sprite8(x,y,8,raq,LCD_MEM,SPRT_XOR);
      y++;
    }
    if(_keytest(RR_LEFT) && x>0)
    {
      Sprite8(x,y,8,raq,LCD_MEM,SPRT_XOR);
      x--;
    }
    if(_keytest(RR_RIGHT) && x<8)
    {
      Sprite8(x,y,8,raq,LCD_MEM,SPRT_XOR);
      x++;
    }
    //Mouvement de l'IA
    if(xballe>100)
    {
      if(yIA<yballe)
      {
        Sprite8(148,yIA,8,raq,LCD_MEM,SPRT_XOR);
        yIA++;
      }
      if(yIA>yballe)
      {
        Sprite8(148,yIA,8,raq,LCD_MEM,SPRT_XOR);
        yIA--;
      }
    }
    //sprite balle et raquette
    Sprite8(xballe,yballe,8,balle,LCD_MEM,SPRT_OR);
    Sprite8(x,y,8,raq,LCD_MEM,SPRT_OR);
    Sprite8(148,yIA,8,raq,LCD_MEM,SPRT_OR);
    //rebondissement de la balle sur les raquettes
    if(xballe+1>x+3 && xballe<x+7)
    {
       if(yballe>y-5 && yballe<y+13)
       xb=-xb;
    }
    if(xballe+7<151 && xballe>142)
    {
       if(yballe>yIA-5 && yballe<yIA+13)
       xb=-xb;
    }
    //detection de la mort distribution des scores
    if(xballe<-3)
    {
      scoreIA++;
      goto debut;
    }
    if(xballe>159)
    {
      scoreJ++;
      goto debut;
    }
  }while (!_keytest(RR_ESC));
  SetIntVec(AUTO_INT_1,oldai1);
  SetIntVec(AUTO_INT_5,oldai5);
}


EDIT:smileys
-Edité le Vendredi 1er juillet 2005 à 23:18 par limmt-
http://www.total-ti89.com/images/total-ti89.gif
    
./Post n°1   Marquer comme non lu.
RHJPP Ecrit le: Vendredi 1er juillet 2005 à 23:15 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


Faut faire des fonctions c'est plus clair
Au lieu de faire goto debut tu peut faire une grande boucle et faire break à la place des goto.

-Edité le Vendredi 1er juillet 2005 à 23:20 par Thepro-
    
./Post n°2   Marquer comme non lu.
limmt Ecrit le: Vendredi 1er juillet 2005 à 23:18 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


non pour un peitt code comme ca si y'a pas de code redondant ca sert à rien et ca sera plus lent
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°3   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 1er juillet 2005 à 23:30 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  


S'il déclare la fonction static inline, ce ne sera pas plus lent. :)
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°4   Marquer comme non lu.
Folco Ecrit le: Vendredi 1er juillet 2005 à 23:37 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


Toutafé. Et ça sera 10 fois plus lisible. :)
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°5   Marquer comme non lu.
limmt Ecrit le: Samedi 2 juillet 2005 à 07:34 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


ben avec les commentaire c'est assez lisible non?
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°6   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 10:20 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  

_keytest_optimized pour les touches de direction, vu qu'elles sont toutes sur la même ligne clavier.

Quelles options de compilation utilises-tu ? Les options par défaut de TIGCC sont faites pour garder la compatibilité antérieure, et ne pas contenir d'options bizarres qui pourraient ne pas convenir à du code bizarre, mais donnent du code qui est tout sauf optimisé (et encore, ça va mieux depuis que les -Ox impliquent -fomit-frame-pointer).
Une bonne base de départ est -Wa,-l -Wa,--all-relocs -mpcrel -mregparm=5 -ffunction-sections -fdata-sections.
Lionel Debroux - membre de TICT.
    
./Post n°7   Marquer comme non lu.
willyFFfan Ecrit le: Samedi 2 juillet 2005 à 10:49 Déconnecté(e)    Voir le profil de willyFFfan Envoyer un email à willyFFfan Visiter le site WEB de willyFFfan Envoyer un message privé à willyFFfan  

Je n'ai absolument rien touché aux option de tigcc...
sa veut dire quoi ton truc en chinois la ?
Une bonne base de départ est -Wa,-l -Wa,--all-relocs -mpcrel -mregparm=5 -ffunction-sections -fdata-sections.
http://www.total-ti89.com/images/total-ti89.gif
    
./Post n°8   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 11:01 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  

1) Copie et colle ça dans les options de compilation de ton projet, et regarde ce que ça fait.
2) RTM pour plus d'explications sur chaque option.
Lionel Debroux - membre de TICT.
    
./Post n°9   Marquer comme non lu.
Jfg Ecrit le: Samedi 2 juillet 2005 à 11:36 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


moi j'ai plutôt tendance à mettre:


  short xb=((rand()%2)<<1)-1;

à la place de

  short xb=rand()%2;
  if (xb==0)
  xb=-1;


(je crois que ça prend un peu moins de place)

un petit truc: xballe+=xb; est plus court à écrire que xballe=xballe+xb;
-Edité le Samedi 2 juillet 2005 à 11:38 par jfg-
Kill Mario
    
./Post n°10   Marquer comme non lu.
Link Ecrit le: Samedi 2 juillet 2005 à 11:46 Déconnecté(e)    Voir le profil de Link Envoyer un email à Link Visiter le site WEB de Link Envoyer un message privé à Link  

moi, je mettrais
short xb = (rand() & 2) - 1
, directement... (enfin, si rand() renvoit un entier, ce qui semble être le cas...)
    
./Post n°11   Marquer comme non lu.
RHJPP Ecrit le: Samedi 2 juillet 2005 à 12:03 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


Je n'avais pas vu le & !

-Edité le Samedi 2 juillet 2005 à 12:31 par Thepro-
    
./Post n°12   Marquer comme non lu.
Onur Ecrit le: Samedi 2 juillet 2005 à 12:08 Déconnecté(e)    Voir le profil de Onur Envoyer un email à Onur Visiter le site WEB de Onur Envoyer un message privé à Onur  


Jfg :
un petit truc: xballe+=xb; est plus court à écrire que xballe=xballe+xb;


est-ce que tigcc transforme xballe=xballe+xb en xballe+=xb automatiquement?

sinon, #6 --> #toptop# #fou2#
Je ne veux pas faire quelque chose de bien, je cherche l'excellence:ETP Studio...


et autres projets à finir avant 2010
    
./Post n°13   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 12:17 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  

> est-ce que tigcc transforme xballe=xballe+xb en xballe+=xb automatiquement?
Evidemment, c'est le standard C.

> "<<1"
Non, "*2". Le compilo ne traduira en principe jamais ça en "<<1" car ce n'est jamais plus petit, mais toujours plus lent, quelle que soit la taille de la donnée.
Lionel Debroux - membre de TICT.
    
./Post n°14   Marquer comme non lu.
Jfg Ecrit le: Samedi 2 juillet 2005 à 12:22 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


ah ok.

-Edité le Samedi 2 juillet 2005 à 12:22 par jfg-
Kill Mario
    
./Post n°15   Marquer comme non lu.
willyFFfan Ecrit le: Samedi 2 juillet 2005 à 13:01 Déconnecté(e)    Voir le profil de willyFFfan Envoyer un email à willyFFfan Visiter le site WEB de willyFFfan Envoyer un message privé à willyFFfan  

J'ai fait ce que tu m'a dis, c'est a dire :
-Wa,-l -Wa,--all-relocs -mpcrel -mregparm=5 -ffunction-sections -fdata-sections
eh bah c'est pas terrible ^^.
Ca grossit le fichier et le jeu est plus lent... (il pase de 1.27ko a 1.64 et il est au moins 2* plus lent).
Vous pourriez me repassez celle d'origine ??
-Edité le Samedi 2 juillet 2005 à 13:02 par willyFFfan-
http://www.total-ti89.com/images/total-ti89.gif
    
./Post n°16   Marquer comme non lu.
RHJPP Ecrit le: Samedi 2 juillet 2005 à 13:04 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


L'original :
-Os -Wall -W -Wwrite-strings -ffunction-sections -fdata-sections
    
./Post n°17   Marquer comme non lu.
limmt Ecrit le: Samedi 2 juillet 2005 à 13:29 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


*2 est plus rapide que <<1 ?? :s
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°18   Marquer comme non lu.
Jfg Ecrit le: Samedi 2 juillet 2005 à 13:42 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Je suppose que "*2" est remplacé par une addition...
Kill Mario
    
./Post n°19   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 13:47 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  

> Ca grossit le fichier et le jeu est plus lent... (il pase de 1.27ko a 1.64 et il est au moins 2* plus lent).
... Ne me dis pas que tu as enlevé -Os -W -Wall -Wwrite-strings ?? Si oui, forcément que c'est plus gros et plus lent. Compiler sans optimisation...

-ffunction-sections -fdata-sections ne fait pas partie des options de l'original.

> *2 est plus rapide que <<1 ?? :s
Si c'est fait par une multiplication, non. Mais quand un compilateur pour le 68000 original te générera une multiplication pour une multiplication par une puissance de deux, tu pourras le mettre à la poubelle ! Pour un *2, un vrai compilateur générera une addition dans la plupart des cas (à vérifier pour une opération en mémoire par rapport à un lsl).

[EDIT: cross]
-Edité le Samedi 2 juillet 2005 à 13:48 par Lionel Debroux-
Lionel Debroux - membre de TICT.
    
  :: Index » Forum Ti68K » Programmation C » Pong (33 réponse(s))
Pages : 1/2     « [1] 2 » »|

.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 68.2ms avec 18 requetes