Vous n'êtes pas identifié.
Et ouais, Windows c'est pas le mieux mais c'est quand même l'OS sur lequel tourne la plupart de nos outils favoris
Mais je préfère quand même le style de mon Linux :P
Hors ligne
Hors ligne
système d'exploitation <=> Windows
Hors ligne
j'ai tout repris étape par étape , je met mon perso qui bouger , puis c'est n insérant une bmp que cale foire , tout devient gris meme mon perso au lieu que la bmp soit noir ainsi qu'une poartie du perso ...
Hors ligne
mé le code
ou envoie moi le sur msn
ou par mail
ou ICQ
ou IRC
ou ... :mrgreen:
Hors ligne
LE VOICI , c'est juste une partie de ma source pour mes tests c'est lorsque que je rajoute la bmp a la fin de la boucle "market" qu'il y a ce pb cité (la bmp n'est pas la finale bien sur c'est pour les testes ):
#include <stdio.h>
#include <conio.h>
#include <db-lib.h>
#include <sprite.h>
unsigned char market[]={
0, 0, 0, 0, 0, 0, 0, 64, 0, 64, 0, 0, 6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,128, 0, 32, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,128, 3, 16, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,252, 15, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
252,255,255,255,127, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,192, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,128, 1, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
0, 0, 0, 0,128, 0, 0,224,255, 0, 0, 0, 0, 4, 0, 0,
0, 0, 0, 0,128, 0, 0, 32, 0, 3, 0, 0, 0, 24, 0, 0,
0, 0, 0, 0,128, 0, 0, 16, 0, 12, 0, 0, 0, 16, 0, 0,
0, 0, 0, 0,128, 0, 0, 16, 0, 8, 0, 0, 0, 16, 0, 0,
0, 0, 0, 0,128, 0, 0, 16, 16, 16, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0,128, 0, 0, 16, 16, 16, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0,128, 0, 0, 16, 16, 16, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0,128, 0, 0, 16, 56, 16, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0,128, 0, 0, 16, 56, 24, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0,128, 0, 0, 16, 0, 8, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0, 0, 1, 0, 16, 0, 8, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0, 0, 1, 0, 16, 0, 12, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0, 0, 1, 0, 16, 0, 4, 0, 0, 0, 16, 0, 0,
0, 0, 0, 0, 0, 2, 0, 48, 0, 3, 0, 0, 0, 16, 0, 0,
0, 0, 0, 0, 0, 4, 0,192,255, 1, 0, 0, 0, 8, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0};
u_char CLADBAS[]= { 8,8, // Hauteur | Largeur sprite vers bas
1,25,102,255,102,255,1,25,3,3,3,3,3,3,3,3,0 };
u_char CLADHAUT[]= { 8,8, // Hauteur | Largeur sprite vers haut
192,192,192,192,192,192,192,192,128,152,102,255,102,255,128,152,0 };
u_char CLADGA[]= { 8,8, // Hauteur | Largeur sprite vers gauche
0,6,6,6,6,6,0,15,0,15,6,6,246,246,249,255,0 };
u_char CLADDR[]= { 8,8, // Hauteur | Largeur sprite vers droite
159,255,111,111,96,96,0,240,0,240,96,96,96,96,0,96,0 };
void copypage(int source ,int target)//sa c une fct ke g trouV je C plu ou é ke g modifié p remplacer celle de DB-lib passke en c++ è march pa ... (je croi ki fo fer #extern C ou un truc kom sa ... mé bon cel la è march tré bien moi je fé avec sa
{
asm{ //Copy la page source a la page target - Superna //modif par moi(f4)
push ds
mov es,target
mov di,0
mov ds,source
mov si,0
cld
mov cx,512
rep movsw
pop ds
};
}
void refresh()
{
/* REFRESH: BUFFERS --> ECRAN: SEG2 --> SEG1
SEG4 --> SEG3 */
asm {
push ds
mov cx,0x1A60
mov ds,cx // adresse du premier buffer ( 0x1A60 ) dans ds
sub cx,0x40
mov es,cx // adresse de la premiere page video ( 0x1A20 ) dans es
xor di,di
xor si,si // di=si=0 : on commence au début des pages
mov cx,512 // il faut copier 512 mots
cld // incrémentation automatique de di et de si à chaque movsw
rep movsw // copie cx mots de ds:si a es:di ( premiere page )
add di,1024
add si,1024 // saute une page
mov cx,512 // remet le compteur à 512
rep movsw // copie la deuxieme page
pop ds
}
}
void clearbuff()
{
asm {
mov ax,0x1A60
mov es,ax // adresse du buffer dans es
xor di,di // on commence a 0
mov cx,512 // on copie 512 mots
xor ax,ax // valeur a copier ( 0 ) dans ax
cld // incrémentation automatique de di à chaque stosw
rep stosw // on copie cx fois le contenu de ax a l'adresse es:di ---> efface la 1ere page
add di,1024 // saute une page pour recommencer sur le 2eme buffer
mov cx,512 // on remet le compteur cx a 512
rep stosw // ---> efface la 2eme page
}
}
int main ()
{
int c,d; //coordonees du sprite
c=30;
d=25;
db_on(); //passe en mode DB,r‚gle le contraste
clear3(SEG1);
clearbuff();
disp_bmp(market,SEG1);
drawsprite(c,d,CLADGA);
refresh();
do{ temps(150);
if (testkey(4,7)) break; // quitte le programme si on appui sur ....
if (testkey(1,9)) //gauche
{
c--;
clearbuff();
drawsprite(c,d,CLADGA);
refresh();
}
if (testkey(4,9)) //droite
{
c++;
clearbuff();
drawsprite(c,d,CLADDR);
refresh();
}
if (testkey(2,9)) //haut
{
d--;
clearbuff();
drawsprite(c,d,CLADHAUT);
refresh();
}
if (testkey(3,9)) //bas
{
d++;
clearbuff();
disp_bmp(market,SEG1);
drawsprite(c,d,CLADBAS);
refresh();
}
if (d>60) d=60;
if (d<5) d=5;
if (c<5) c=5;
if (c>120) c=120;
disp_bmp(market,SEG1); // JAI LE PB QUAND JE RAJOUTE CE BMP IL DOIT ETRE EN NOIR MAIS IL EST EN GRIS ET MON PERSO DE VIENT TOUT GRIS LUI AUSSI
}while (1); //refait la boucle indefiniment
db_off(); //sort du mode DB
return(0);
};
Hors ligne
Moi aussi ça m'interresse tout ça!
Où est-ce que je peux trouver la librairie 'sprite.h'?
Tu utilises quoi pour sortir ces lignes : '1,25,102,255,102,255,1,25,3,3,3,3,3,3,3,3,0'?
Hors ligne
Mouais... La structure de ton main est pas top. En général, qd tu vois des répétitions, tu peux te dire que c mauvais signe... :?
Sinon ton probleme est le suivant: tu dessines ton perso en buffers (pour faire un refresh apres, ok), mais tu affiches ton bmp directement à l'écran, plutot que sur les buffers juste avant le perso... :? Affiche tes bmp sur le SEG2, ca ira sans doute mieux (je sais pas comment fonctionne ce disp_bmp)
Pour ton main, et pour gérer tes sprites plus efficacement, donne-leur un numéro, et mets leurs adresses dans un tableau.
par exemple tu fais qq chose comme
#define GAUCHE 0 #define DROITE 1 #define BAS 2 #define HAUT 3 /* rajoute tes sprites ici */ u_char sprites_clad[]={CLADGA,CLADDR,CLADBAS,CLADHAUT}; int main() { int c,d; //coordonees du sprite c=30; d=25; int sprite=0; // numero du sprite a afficher db_on(); //passe en mode DB,r‚gle le contraste while(testkey(4,7)==0) { if( testkey(1,9)) //gauche { if (c>5) c--; sprite=GAUCHE; } else if (testkey(4,9)) //droite { if (c<120) c++; sprite=DROITE; } else if (testkey(2,9)) //haut { if (d>5) d--; sprite=HAUT; } else if (testkey(3,9)) //bas { if (d<60) d++; sprite=BAS; } clearbuff(); disp_bmp(market,SEG2); drawsprite(sprites_clad[sprite]); refresh(); } db_off(); //sort du mode DB return(0); }
Et voila, c qd meme plus propre je trouve...
Hors ligne
Note: il utilise mes fonctions pour ses sprites. Cette lib sera officiellement dispo (ainsi qu'une autre) d'ici 1 ou 2 jours
Hors ligne
cool merci
Hors ligne
merci Julien , en fait a la fin tu utilise une fonction du style Ans pour afficher le sprite de la touche qui a été pressée avant .
j'avais deja penser a ça mais je ne trouvais pas la fonction dans le tuto ...
donc je te remerci c'est bcp plus simple l'enchainement avec les else ;-)
cool j'utilisais tes fonctions en avant premiere , elles sont en plus super simple d'utilisation et sont super efficaces ... :P
Hors ligne
oula j'ai tapé ton code julien et ya 12 erreurs et maintenant 10 aprés changements quand je compile
le plupart sont ds cette ligne: u_char sprites_clad[]={CLADGA,CLADDR,CLADBAS,CLADHAUT}; voici les erreurs que cela me marque pour cette ligne : "nonportable pointer convertion"
et "illigal inizialisation"
UNE AUSSI DANS :int sprite=o "fonction is not allowed here"
derniere erreur ds :drawsprite(sprites_clad[sprite]);
voila j'espere que tu comprend les erreurs pk moi je connais pas ces nouvelles fonctions ...
merci
"too few parameters to call "drawsprite"
Hors ligne
oups, sorry, j'ai oublié un caractère :? :oops:
c'est
u_char *sprites_clad[]={CLADGA,CLADDR,CLADBAS,CLADHAUT};
Voila... l'étoile qui manquait indique que les éléments du tableau sont des pointeurs, c'est-a-dire des variables qui contiennent l'emplacement mémoire de tes sprites (c'est bien de ca que drawsprite a besoin pour les afficher).
pour le int sprite=o "fonction is not allowed here" , je vois pas... regarde si ca te fais encore ca.
Sinon effectivement c un genre de Ans... mais ca consiste "betement" à mettre le résultat dans une variable et à utiliser cette variable pour savoir à la fin ce qui a été fait
PS: pour la lib: elle est terminée, mais je suis en train de rédiger le readme
Hors ligne
pour le "int sprite=o;" c normal, vu que fantasy fait du C et non du C++ (en C les declarations de variables doivent etre toutes faites au debut de la fonction... et avant les affectations...)
Hors ligne
Ah oui, en effet...
Mets
int c=30,d=25; //coordonees du sprite int sprite=0; // numero du sprite a afficher
au début du main alors
Merci master
Hors ligne
ouai c'est ce que j'ai fais ;-) et sa marche correct maintenant
y'avait juste un truc aussi , mettre les coordonnes au drawsprite a la fin de la boucle ..
un truc que je comprend pas , dans le code pourtant sa devrait marché , la bmp ne s'afficfe pas en noir comme il se devrait
sinon merci bcp pour votre aide c'est vrai que come ça en plus c'est bcp plus simple a comprendre et moins répétitif lol
lol aussi ya plus le multi touche je viens de m'en rendre compte sa doit etre a cause des else qui empeche de faire les multi touchent...
je vais voir si je peux les enlever en mettant les limites a ne pas depasser a la fin
c'est bon c'est regler pour le multitouche
Hors ligne
Ah ben oui si tu veux garder le multitouche il suffit de virer les else...
Sinon pour le bmp c'est normal, vu qu'a mon avis tu utilises une fonction prévue pour le mode C3 (noir et blanc) alors que tu es en DB... Il me semble que je t'avais donné une fonction drawbmp() aussi, prévue pour le DB... Pourquoi réutilises-tu disp_bmp()?
Hors ligne
JE l'avais changé car la je l'ai remis mais quand je fais make ya marqué UNDEFINED SYMBOL drawbmp in modul .../.../.../nomduprog.cpp
alors que quand je compile ya aucune erreur !?
Hors ligne
voila j'ai les deux erreurs :Linking ........JEUXJULIEN.EXE:
Linker Error: Undefined symbol _drawsprite in module ........JULIEN.TXT
Linker Error: Undefined symbol _drawbmp in module ........JULIEN.TXT
Linker Warning: No stack
les deux undefined symbol !! c'est bizarre sa !
Hors ligne
Oui c un probleme d'extension, mais "julien.c" (lol) a la place et ca ira...
Hors ligne
ouah en faisant trop vite j'ai emme pas capter :oops:
si vous me chercez je suis dehors ...
Hors ligne
on va plutot te laisser dehors la... :ptdr:
Hors ligne
escusez moi , je cherche ue lib ayant une fonctions pour afficher une bmp en mode DB , impossible de trouver des libs a part casio2.h qui est obsolète .
autre chose , comment faire un projet avec turbo C , je clique sur project mais je peux juste ouvrir qque chose mais pas faire un projet .
merci
Hors ligne