Avatar billede mfriis Nybegynder
30. august 1999 - 19:31 Der er 9 kommentarer og
1 løsning

Grafik!!!

Jeg er ret ny i det her c++,
Jeg har lavet et par programmer.
(noget med cin og cout o.s.v)
Men det er lidt kedeligt...
Så derfor spøger jeg jer hvordan sætter man grafik ind...

(Jeg bruger TC, er det godt nok)

MVH
Morten Friis
Friis.home@post.tele.dk
www.Mfriis.subnet.dk
Avatar billede skovlunde Nybegynder
30. august 1999 - 21:26 #1
Hvilket miljø arbejder du med?

Da du nævner TC må det antages at være ren DOS eller andet konsol sprog.

Ligegyldigt hvad så skal du ændre skærm opsætning fra at være Text based (Tegn) til Bitmapped Grafik. Det gør du ved at skrive direkte til grafikkortet med en instruktion om dette. Nuvel det er lettere sagt end gjort. Hvis du har et VGA kort kan det gøres på følgende måde:

#define MODE_TEXT 0x03
#define MODEX 0x13


#inlcude <bios.h>

union REGS inregs, outregs;

inregs.h.ah = 0;
inregs.h.al = (unsigned char)MODEX;

_int86(0x10, &inregs, &outregs);


Herved har du sat din skærm opsætning til 320x200x256.

Da det næppe hjælper ret meget uden adgang til video hukommelsen kan denne opnås på følgende måde:

(Video pointeren ligger i 0xA000:000h-0xA000:F9FFh området)

unsigned char* VideoPointer = 0;

/*Hent hukommelsen i video bufferen*/
VideoPointer = (unsigned char far *)
0xA0000000L;

Herved har du alt hvad du skal bruge for at plotte graphic til skærmen. Det er ikke helt så let som man lige måske tror..:) I hvertfald er Windows en hel del lettere at arbjede med.

Hvis du så eventuel vil fylde din op med farve så det går rigtig schnell kan du bruge følgende:

int color = 56;

_asm
{
les di, VideoPointer ;es:di mod VideoPointer
mov al, BYTE PTR color
mov ah,al
moc cx, 320*200/2  ;Der bruges word i stedet for Byte
rep stosw
}



Der findes ret meget om dette rundt omkring, prøv især at søge på de steder der har med spilprogammering at gøre...


Avatar billede bjarke Nybegynder
31. august 1999 - 08:10 #2
skovlunde >> Det var vist for de hårde drenge;-)

mfriis >> I TC (og Borland generelt) er der lavet funktioner direkte til "grafik-programamering". Man skal bruge headerfilen graphics.h. Hvis du ikke kan finde ud af det, så spørg, for så kan jeg lave et lille demoprogram som bruger Borlands grafik (det er nok betydeligt lettere end ovenstående, selvom det nok ikke er helt så effektivt som det skovlunde beskriver).
Avatar billede bjarke Nybegynder
31. august 1999 - 08:12 #3
Nå ja. TC er udmærket afhængig af hvad det er du vil. Men, hvis du vil lave rigtige spil med grafik og hele molevitten, så skal du nok kigge dig om efter noget andet (jeg bruger selv TC og er godt nok tilfreds med det).
Avatar billede soepro Nybegynder
31. august 1999 - 09:23 #4
TC (Turbo C) indeholder som skrevet interface funktioner til Borlands eget grafik bibliotek BGI. Hvis du geninstallerer TC og vælger også at få installeret BGI, ligger der et udemærket demo program BGIDEMO, der viser dig hvordan du laver de fleste grafik funktioner. (Cirkler, kasser med og uden fyld osv.) Det er hurtigt nok til simple spil og f.eks. programmer til at vise grafer, lave tegninger osv. Men hvis du skal lave noget lidt mere avanceret end dette, ville jeg overveje at benytte en compiler der direkte understøtter Windows - og her er C++ Builder fra Inprise (Borland) helt klart det bedste bud. Du kan bruge compileren til at lave alm. "consol-mode" programmer, a la i TC men også til at lave rigtige windows programmer.

IDE'n er helt magen til TC, men du får muligheden for at tegne dit bruger-interface direkte med musen. Programmeringsformen ligner den du muligvis kender fra TurboVision - altså hvor programmets logik laves som reaktioner på forskellige events - adskildt fra alt hvad der har med tegning af skræmbilleder etc. at gøre. Man kan i C++ Builder lave såkaldte VCL'er (Visual Component Library) som kan indeholde/vise et bitmap billede, og flytte dem rundt på skærmen ved simpelthen at justere "top" og "left" - og disse kan du have i lige så mange niveauer som du behøver. Alt omkring gentegning af skærmen osv. er indbygget i programmet, så i den sammenhæng behøver du ikke skrive så meget som een linie.

Jeg kan sende dig BGIDEMO.CPP hvis du ikke lige selv kan finde den. (Fik jeg skrevet at jeg selv har brugt TC 3.0 i ca. 7 år, inden jeg gik over til C++ Builder.)
Avatar billede bjarke Nybegynder
31. august 1999 - 10:15 #5
soepro >> kender du til problemer med at køre C++ Builder under Windows98. Jeg har prøvet at reinstallere begge dele flere gange, men hver gang jeg kører Builder, så går computeren total kold når cirka halvdelen af Builder komponenterne er kommet på skærmen(ctrl+alt+del virker heller ikke)?
Avatar billede skovlunde Nybegynder
31. august 1999 - 13:26 #6
Bjarke>>> Det er fordi du har fået fat i en gammel installation af BC++, som kun virker i meget specielle tilfælde. Der findes opdateringer for den fejl...
Avatar billede bjarke Nybegynder
31. august 1999 - 20:12 #7
skovlunde >> Er du sikker på det? Det er BC++ 3, som jeg købte foråret 98. Den kører også godt nok på min anden computer under windows95.
Avatar billede soepro Nybegynder
01. september 1999 - 08:54 #8
Bjarke >> Jeg tror skovlunde har ret. Jeg har BC 5.02 (som følger med C++ Builder 4 PRO) og den har jeg lige installeret på min kollega's PC'er som kører Win98 - og det fungerer fint.
Avatar billede bjarke Nybegynder
01. september 1999 - 08:57 #9
skovlunde og soepro >> Mange tak skal I have. Men hvad gør jeg så? Hvis jeg skal have fat på nogle opdateringer, hvor gør jeg så det, og hvordan finder jeg evt. ud af hvilke opdateringer det drejer sig om?
Avatar billede soepro Nybegynder
01. september 1999 - 10:02 #10
Prøv på Inprise's site www.inprise.com - jeg er sikker på at du kan finde patches etc. der.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester