1

Oui, toujours dans mes débuts en C, j'ai un problème lors de l'affichage d'une map "classique" (case 32*32 blanche ou noire).

Voilà mon code, en fait l'affichage est tout sacadé au lieu de donner une truc bien nickel (au niveau des bordure ect) :

screen.JPG
et en plus ce n'est même pas la map théorique, il affiche bien autre chose (y'a qu'à voir le vrai code de la map).

#define USE_TI89

#define OPTIMIZE_ROM_CALLS

#define SAVE_SCREEN

#include <tigcclib.h> 
void _main(void)
{
    short x=0,y=0;
    unsigned short mat[3][5]={{1,1,2,1,2},{2,2,1,2,2},{1,2,1,2,1}}; //map 3*5
    unsigned long sprt[][32]={{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},{ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}};
// matrice contenant les 2 sprites 32*32, "case blanche" et "case noire"
    clrscr();
    for(x=0;x<5;x++)
    {
          for(y=0;y<3;y++)
          {
               Sprite32(x*32,y*32,32,sprt[mat[x+1][y+1]],LCD_MEM,A_OR);
           }
  }
  ngetchx();
  clrscr();
}


vala ... si vous pouvez me dire ce qu'il va pas, ça serait vraiment cool.

merci.
[edit]Edité par Pim89 le 11-02-2002 à 10:51:47[/edit]
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

2

je pense que l'erreur viens de la:
sprt[mat[x+1][y+1]]

fais plutot qqc de ce genre:
p* pointeur sur sprite
sprite7(...,p+mat[x+1][y+1],...)
et tu remplaces tes 1,2.. par 0, 32

si tu compte faire un jeux .. utilises alors _X_lib, ce sera beaucoup plus facile et rapide a utiliser que les fonctions de extgraphlib ou tigcc....
Ou si tu veux programmer en kernel: genlibsmile
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

3

t'as oublié le [pub][/pub] grin
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

4

oooooookkkkk .... en fait mon erreur était toute con, déjà en inversant les for(x ...) et for(y...) la ligne d'affichage ne suivait plus ... ensuite j'avais oublié qu'en C pour repérer des élement dans une matrice, c'était différent du BASIC ... roll

Merci maintenant tout marche.

PS : je ne compte pas faire un jeu (la preuve,t 'as vu le niveau de mes questions grin), mais j'apprend le C (depuis 1 semaine) et je voulais comprendre ça (étant donné que le C est surtout utilisé pour sa rapidité graphique).



YARO TU PEUX FERMER LE TOPIC STP ???
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

5

le C, utilisé pour sa rapidité graphique... arf... c'est sûrement pour ça que les deux librairies graphiques les plus performantes sont codées en ASM, et non pas en C grin
(Genlib et Xlib)

attention: souvent, on crois ne commencer un prog que pour apprendre quelques trucs.. et puis, au final, on s'attache au projet grin et on le continue grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

6

rapidité graphique >>> en général les programmes codé en C sur TI68k sont des jeux avec des graphismes, voilà pourquoi j'ai dis ça ... mais y'a d'autre truc aussi (utilitaire ect).

Non, je ne ferais pas de jeux, car je n'ai vraiment pas le niveau pour l'instant ...

A fait squale92, dans Krypton, tu réactuatlise ta map à chaque fin de boucle où l'on teste les touches ou tu l'affiche une fois au début du level ??

car avec cette méthode de tout réactualiser chque fin de boucle "pression touches", je pers bcp de rapidité, ça reste assez fluide et rapide mais pas des masses non plus ...
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

7

Le problème vient du mat[x+1][y+1]. Les +1 sont en trop! Pourquoi +1??? Les arrays (tableaux) en C commencent à 0 !

Pour la même raison, le suivant est faux:
unsigned short mat[3][5]={{1,1,2,1,2},{2,2,1,2,2},{1,2,1,2,1}};
Correct:
unsigned short mat[3][5]={{0,0,1,0,1},{1,1,0,1,1},{0,1,0,1,0}};
[edit]Edité par Kevin Kofler le 11-02-2002 à 23:40:18[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

Oui, C pour ça que j'ai dis "reperer les élement d'une matrice en C est différent du BASIC roll" ... merci Kevin ! tongue
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

9

dans Krypton, j'efface l'écran à chaque cycle du programme, et je redessine tout (sauf la barre de menu)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

10

ouep, et pour du scrolling vous feriez comment ???

Moi je voudrais scroller horizontalement et verticalement sur une map, mais en "glissant" sur le décor, pas en ré-actualisant la map "une case plus loin dans la matrice".

Je sais pas trop si vous voyer ce que je veux dire ... en gros dans les RPG, on voit le décor qui "glisse" quand le bonhomme monte ... ben moi je veux faire ça, mais je sais pas comment (j'arrive pas à trouver le bon algo). Le seul truc que j'arrive à faire, c'est la méthode bourrine : c'est à dire de réafficher d'un coup, sans faire de déplacement progressif sur le décor.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

11

utiliser du VRAI scrollin signifie que tu peut pas faire de scrolling différentiel (à plusieurs vitesses)...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

ben, pour le scrolling je veux un truc qui ressemble au scrolling de Chrono Fantasy ou les bons RPG quoi ... je sais pas comment il faut appeler ça.

Ce que je veux, c'est savoir comment le faire en C.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

13

Il faut tou reafficher a chaque fois.. 1 pxl plus haut...
Pour cela il faut avoir des fonctions splitées... (cf gen ou Xlib) car tigcc ne les supportes pas et de plus, leurs fonctions sont trop lentes...
Le vrai scrolling consite a prendre un pointeur au debut de la mem, une a 30 octets plus bat, et tou decale... mais ca sert a rien, dans chronof, il reaffiche tout a la fois.. ce qui permet par ailleur d'avoir des annimations...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

14

oui mais comment réafficher tout ??? je fonctionne avec des matrice pour ma map, et chaque valeur correspond à un sprite qui sont tous stocké dans une seconde matrice ...

le truc c'est que pour le scrolling, il faudra desfois afficher "la moitié" d'un sprite (si je scrolle juste une ou deux fois), donc comment faire pour afficher seulement la moitié ect, pour avoir un beau scrolling ????
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^