Sujet : [Gros newbie en C] Pkoi ca clignote en mode 13h? |
leboss |
thx youdon't care!
Adieu dos ... snif
en plus je vais pouvoir installé win xp lol chuis resté sous 98 pour le dos :D |
leboss |
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 |
leboss |
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] |