[Gros newbie en C] Pkoi ca clignote en mode 13h?

Pkoi ca clignote en mode 13h? [Gros newbie en C] - Programmation

Marsh Posté le 11-11-2001 à 15:38:30    

Voila c un prog tt simple ( je debute)
en fait c pour faire defiler des etoiles de gauche a droite de l'ecran avec des couleurs aleatoirse voila...
Mais le bleme c ke mes etoiles ki se situent en haut de l'ecran clignotent alors ke celles d'en bas non!!
Bon voila le code zsource (l'est po long) vs pouvez me dire oun est l'erreur merci!!
ca m'aidera a fond pour continuer paske bloker des le debut... snif ca decourage un max thx
 
#include <conio.h>
#include <stdlib.h>
#include <mem.h>
#define nbretoiles 50
 
char *ecran =  (char *) (0xA0000000L);
int etoilex[nbretoiles];
int etoiley[nbretoiles];
int couleur[nbretoiles];
int i = 0;
 
void setmode(unsigned int mode){
asm{
MOV AX, mode
INT 0x10
}
}
 
void putpixel(int x, int y, unsigned char coul){
    ecran[(y*320)+x] = coul;
}
 
void cls(unsigned char coul){
memset (ecran,coul,64000);
}
 
void initialisation(){
for (i=0;i<nbretoiles;i++){
etoilex[i]=random(320);
etoiley[i]=random(200);
couleur[i]=random(255);
}
}
void affichage(){
cls(0);
for(i=0;i<nbretoiles;i++){
putpixel(etoilex[i],etoiley[i],couleur[i]);
putpixel(etoilex[i]+1,etoiley[i],couleur[i]);
putpixel(etoilex[i],etoiley[i]+1,couleur[i]);
putpixel(etoilex[i],etoiley[i]-1,couleur[i]);
putpixel(etoilex[i]-1,etoiley[i],couleur[i]-1);
putpixel(etoilex[i]-2,etoiley[i],couleur[i]-2);
}
}
 
void incrementation(){
for (i=0;i<nbretoiles;i++)
etoilex[i]++;
}
 
void infini(){
for(i=0;i<nbretoiles;i++)
if (etoilex[i]==319){
etoilex[i]=0;
etoiley[i]=random(200);
}
}
 
 
void main(){
setmode(0x13);
initialisation();
do{
affichage();
incrementation();
infini();
}while (!kbhit());
}

 

[edtdd]--Message édité par leboss--[/edtdd]

Reply

Marsh Posté le 11-11-2001 à 15:38:30   

Reply

Marsh Posté le 11-11-2001 à 15:49:53    

parce que tu n'attends nulle part la vbl ...
 
si tu veux tout comprendre, y'a plein de tutoriaux qui datent de 5/6 ans dispo un peu partout. sinon tu peux faire ça sous dx ou ogl (bieen) parce que le 13h, ... hum.

Reply

Marsh Posté le 11-11-2001 à 15:51:52    

Balaise pour un débutant :eek2:


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
Reply

Marsh Posté le 11-11-2001 à 15:58:04    

ouiiiiiiiiin comprend rien :D
youdontcare : bah en fait g essayé de voir un peun des tutorial dx ou opengl bah... j'arrive meme po a creer une fenetre windows... sous borland c++... alors je me susi dis ke j'allais bien maitriser la prog graphique dos puis je m'aventurerais vers opengl!
personne peut compiler ca et voir ce ke ca donne?
Mr tonio t serieux? lol si c vrai bah ca me fait chaud au coeur paske g t degouté de voir ke j'arrivais a rien foutre thx

Reply

Marsh Posté le 11-11-2001 à 15:58:59    

euh c koi la vbl?

Reply

Marsh Posté le 11-11-2001 à 16:02:51    

La prog graphique DOS, c'est quand même pas trop utile.
Surtout si tu veux attaquer par la suite DX ou OpenGL.

Reply

Marsh Posté le 11-11-2001 à 16:07:04    

ça me fait marrer parce que j'ai commencer quasi pareil, mais y'a 6 ans :D ... à l'époque en turbo pascal 6 avec de l'inline asm. aujourd'hui, y'a quand même de quoi faire des trucs un peu plus clean ... c'est vrai que ça doit être costaud de commencer par ogl, mais de mon point de vue de maintenant c'est quand même plus simple.
 
bref. la vbl c'est la vertical blanking, le signal qui indique la montée et descente du canon à électron. en pratique il faut attendre qu'elle remonte puis qu'elle descende, afin de faire l'update de l'écran pendant le temps où il n'est pas balayé.
 
un truc comme
mov dx, 3dah
@@1: in al, dx
or al, al
jz @@1
@@2 : in al, dx
or al, al
jnz @@2
 
ou l'inverse, je sais plus.
 
et pour les gros trucs, il faut avoir un écran virtuel dans lequel tu fais toutes tes opérations, puis que tu recopies dans l'écran.

Reply

Marsh Posté le 11-11-2001 à 16:29:08    

youdontcare a écrit a écrit :

ça me fait marrer parce que j'ai commencer quasi pareil, mais y'a 6 ans :D ... à l'époque en turbo pascal 6 avec de l'inline asm. aujourd'hui, y'a quand même de quoi faire des trucs un peu plus clean ... c'est vrai que ça doit être costaud de commencer par ogl, mais de mon point de vue de maintenant c'est quand même plus simple.
 
bref. la vbl c'est la vertical blanking, le signal qui indique la montée et descente du canon à électron. en pratique il faut attendre qu'elle remonte puis qu'elle descende, afin de faire l'update de l'écran pendant le temps où il n'est pas balayé.
 
un truc comme
mov dx, 3dah
@@1: in al, dx
or al, al
jz @@1
@@2 : in al, dx
or al, al
jnz @@2
 
ou l'inverse, je sais plus.
 
et pour les gros trucs, il faut avoir un écran virtuel dans lequel tu fais toutes tes opérations, puis que tu recopies dans l'écran.



comment on fait ca plize... euh sinon bah la vous m'avez convaicu vous connaissez po de bon sites pour commencer en prog direct draw, d3d ou opengl... et pis je sais po trop si borland c++ est bien pôur la prog win, j reste dessus ou je migre vers visual c++...
Arf merde g 6 ans de retard :D

Reply

Marsh Posté le 11-11-2001 à 16:30:16    

pour l'ecran virtuel c un tableau à 2dimension c ca?
mais pour le copier dans la memoire fais comment? point par point (putpixel) ou en bloc avec memset(je sais po trop comment vais faire ca)

Reply

Marsh Posté le 11-11-2001 à 16:40:03    

memcpy(). ça peut être char tab[320][200] ou char tab[64000]. justement en ogl / directx / gdi (windows) y'a tout de prévu.
 
des bons sites ? cherche sur le forum, y'a déjà eu des tonnes de questions similaires.
 
et SURTOUT : www.google.com , tu trouveras _tout_ ce que tu veux là-dessus.

Reply

Marsh Posté le 11-11-2001 à 16:40:03   

Reply

Marsh Posté le 11-11-2001 à 16:42:53    

thx youdon't care!
Adieu dos ... snif
en plus je vais pouvoir installé win xp lol chuis resté sous 98 pour le dos :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed