Gå til innhold

Allegro henger PC-en, og noen måte å kompilere lettere på?


Anbefalte innlegg

Hei.

Jeg har i det siste fått interesse for å prøve å lage spill. Og siden jeg hadde et semester med C++ for fysikkstudenter, så er det språket jeg vil fortsette med. Jeg fant da en guide som jeg tenkte å følge. Og jeg sitter på en linux-maskin, Ubuntu.

Etter mye styr, så tror jeg at jeg fikk installer Allegro som er bibloteket jeg skal bruke og følger eksemplene nedover. Helt fra starten, det første eksempelet medføre litt problemer:

 

#include <allegro.h>

 

 

int main(){

 

allegro_init();

install_keyboard();

set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0);

 

readkey();

 

return 0;

 

}

END_OF_MAIN();

 

[code]

 

Når jeg kompilerte programmet (kommer tilbake til spm 2 senere), c++ -W -Wall -ggdb3 -pipe program -o fil `allegro-config --libs`, og kjørte det så fungerer selve programmet. Skjermen blir sort som det skal, men når jeg hopper ut av programmet ved å trykke på en tast, så blir skjermen låst i 640x480 og jeg har ingen mus. Terminalen fungerer, så jeg fant ut at jeg kan skrive xrandr -s 1024x768, og i de fleste tilfeller, så bare låser PC-en seg, men en sjelden gang så klarer den å forandre oppløsning og jeg kan få stilt den slik jeg ønsker.

Derosm jeg stiller opp oppløsningen i programmet til skjermoppløsnignen, så fungerer det fint å stoppe det.

 

Hva søren skjer her? Jeg må innrømme at jegi kke har full kontroll på den kompileringslinja, men siden det fungerer noen ganger så finner jeg det merkelig.

Det blir gjort og testet på min bærbare som ikke har veldig bra grafikkort eller er veldig kraftig maskin, om det har noe å si.

 

Og når jeg kompilerer, og starter PC-en relativt ofte (pga kræsjinga), så må jeg skrive inn den lange linjen, og det er vanskelig. Så finnes det noen måte jeg kan lage en fil som gjør at jeg trenger å skrive for eksempel "Compile program fil" og resten av informasjonen ligger i kommandoen Compile som kaller et skript og putter inn, eller noe?

Endret av chokke
Lenke til kommentar
Videoannonse
Annonse

Huff.. ville aldri valgt å bruke et bibliotek med så talentløs hjemmeside, det å skifte oppløsning på hele skjermen din er også en veldig usikker løsning som tydelighvis ikke spiller på lag med X-windows. Det ville være mye bedre å åpne et eget vindu for tegning av grafikken istedet.

 

For å svare på den andre spørsmålet ditt så er svaret "make" og "makefiles". (http://www.gnu.org/software/make/manual/make.html#Overview)

 

Driver man med utvikling på Linux kommer man borti makefiler før eller siden. Men det enkleste for de fleste nybegynnere er å bruke et IDE (Integrated Development Envorinment) som lar det sette opp prosjekt med mange kildekodefiler og kompilere disse for deg.

 

Et meget populært et er Eclipse, men for ditt bruk er det veldig fristende å anbefale QtCreator. (http://qt.nokia.com/downloads#qt-creator)

 

Qt inneholder det meste av grafikkhåndtering du trenger får å lage et spill og har masse eksempler, og QtCreator er en enkel IDE som jeg mener passer til en nybegynner.

 

 

 

Lenke til kommentar

Jeg vil åpne med å si Topguy: Hvis du ikke kjenner produktet så ikke uttal deg!

 

Allegro er et veldig fint rammeverk for å starte med spillutvikling i 2d. Særlig hvis prefferert språk er C eller C++. Allegro er primært skrevet skrevet i C men det betyr jo ikke at du ikke kan bruke C++ extensions.

 

Først en aldri så liten Makefile for spillet ditt. Antar at du har kalt

filen med mainmetoden din "main.cpp" eller "main.c"

 

SOURCES = main.cpp
CFLAGS = $(shell allegro-config --cflags)
CPPFLAGS = -Iinclude -D_GNU_SOURCE
LDFLAGS = $(shell allegro-config --libs)

gameout: $(SOURCES)
   $(CXX) $(SOURCES) $(OUTPUT_OPTION) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)

clean:
   rm gameout

 

Den Makefilen (legg merke til stor M) gjør at hvis du skriver "make" i katalogen så kompilerer du spillet/programmet ditt. (Kopier innholet i kodesekmentet til en fil kalt "Makefile", den må ligge i samme katalog som .cpp og .h filene dine ligger)

 

Så til det første spørsmålet: Hvorfor blir ikke resolution satt riktig tilbake når ting går galt. Jo det er pga du ba X om å endre resolution så hvordan ungår man dette?

Du må gjøre et kall til

allegro_exit();

før du returnerer (return 0; (evt kan man bruke return EXIT_SUCCESS ved å inkludere stdlib.h, men det trenger du ikke tenke på enda)

 

http://www.allegro.cc/manual/4/api/using-allegro/allegro_exit

Endret av aC
Lenke til kommentar

Mainmetode? Jeg jobber meg igjennom eksemplene og kaller de test.cpp, test2.cpp, test3.cpp osv osv, regner med dette er main.cpp i Makefila? Etterhvert blir en del filer og å kompilere tidligere eksempler blir slitsomt ved å bytte ut tallene midt i kommandoen. Alle disse ligger også i samme mappe siden jeg ikke har kommet langt nok til å faktisk få noe nyttig ut av det.

Så jeg kan da skrive make test2.cpp test2 for å kunne lage test2 kjørbar istedet for den lange kommandoen?

Lenke til kommentar

Nei ikke helt, hver makefile definerer du hvert proskjet altså bare make, i hver makefile er det definert hvilke(n) filer som trenger å kompilerers.

 

så test.cpp er ett proskjet mens test2.cpp blir et annet. Så lenge du har en mainmetode i hver kildefil.

 

Entrypoint i et prorgam er i c / c++

int main(int argc, char** argv){ ...

Lenke til kommentar

Så finnes det noen måte jeg kan få det til at jeg skriver "etellerannetkompileringsord test2.cpp test2" og den kompilerer test2.cpp som om jeg skulle skrevet den lange linja? Og om jeg skal endre test3.cpp, så trenger jeg bare å skrive "etellerannetkompileringsord test3.cpp test3"?

 

Alternativt får jeg ty til disse Make-filene, lærer det nok tilslutt :) .

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...