Programmera spel i C++ för nybörjare

Från Wikibooks

Introduktion[redigera]

Varför skall man programmera spel i C++? Har du själv funderat över att börja skapa spel i C++ kanske du skall traska iväg till närmaste fiskbutik, köp en nyfångad lax och slå dig själv i huvudet gång på gång tills du ändrar uppfattning. Om du fortfarande tycker att det verkar vara en bra idé, alternativt tycker att spelprogrammering är en roligare väg till förståelse över hur man programmerar C++ än att sitta framför kommandotolkens svarta fönster med vita bokstäver och siffror, är detta boken för dig.

Varför inte C++? Framförallt för att både Java och C# har inbyggda funktioner som gör det så mycket lättare att skapa enklare spel och om du börjar med Flash script kan du skapa spel som alla som kan se Youtube-klipp kan spela.

Varför C++? Om det är så att du aktivt vill vara med om att programmera spel liknande de riktigt tunga spelen på marknaden, så är fortfarande C++ industristandard. Vill du krama ut så hög lön som möjligt under projekttiden? Var då den som är bäst på C++ programmering. En annan aspekt är att det finns en uppsjö olika programspråk för närvarande och de används på specialiserade vis riktade mot olika målgrupper. C++ är det enda programspråk som riktas mot allt. Oavsett om du utvecklar spel och program mot Mac, Unix eller Windows går alltid C++ kod att kompileras (med litet justerande).

Kombinationer[redigera]

För att skapa spel i C++ behövs flera olika samverkande system. Du behöver så klart en dator, vanligen PC eller Mac. Du behöver ett operativsystem, Windows är fortfarande vanligast men Linux är ett bra alternativ. Du behöver ett mediabibliotek och de två största i dagsläget är DirectX och Open GL. DirectX kan bara användas i en Windowsmiljö medan Open GL kan användas av alla datorer oavsett operativsystem så länge grafikkortet stöder Open GL. Till detta behöver du en utvecklingsmiljö där du på ett lätt sätt kan ta in grafik och ljud i ditt spel och en lista på de största gratisvarianterna för C++ finns bland länkarna nedanför: Gratis mediabibliotek. Om du vill använda Allegro eller SFML t.ex. är upp till dig, slutresultatet blir ungefär detsamma när det gäller enklare spel. Slutligen behöver du en kompilator som kan förvandla den skrivna koden till en kod som datorn förstår. Om du använder Windows är Microsoft Visual C++ express vanligast, och du kan ladda ner en gratisversion från Microsofts hemsida. Linux kommer med G++ som installeras automatiskt och som är en riktigt bra kompilator för C++. Inför varje exempel i boken bör det stå vad som behöv för att det skall gå att följa exemplet. T.ex. Windows 7, VC++ 2010 express, SFML 1.6.

Allmänna kapitel[redigera]

Mål i gymnasieskolan De mål i svenska gymnasiet kopplade till programmeringskurserna

C++ referenser online

Uppbyggnad av ett program Hur koden bör struktureras

Gratis mediabibliotek

Nätverksprogrammering Olika rutiner kopplade till nätverksspel

Collision detect Teorier bakom hur man ser om man krockar i spelen.

Länkad lista 1 Hur man skapar en dynamisk lista och fyller den med spelare

Länkad lista 2 Hur man raderar poster i listan och även raderar hela listan

Klass som funktionsvariabel I spelprogrammering använder man ofta klasser i funktioner, istället för tvärtom

C++ headerfiler och cpp filer Hur du kopplar filer mellan varandra i C++

Funktionsanrop i klasser och polymorfism Hur du anropar och ärver funtioner på olika sätt i C++

Kapitel om konsollspel[redigera]

Enkel nummergissare

In Between Slå en tärning mellan bankens tärningar

Äventyrsspel Enkelt spel med flervalsfrågor

Dra kort Få högre spelkort än datorn

Luffarchack En klassiker som kan utvecklas

Sten, sax, påse Avancerad variant där man även kan satsa pengar

Kapplöpning Satsa på hästar, rätt avancerat

Kapitel om SFML[redigera]

Installation av 1.6 (En föråldrad version)

Installation av 2.3.X och VS 2013 (Den första lektionen du bör läsa för att få SFML att fungera)

Slumptalsgeneratorn

Programmera med tid

Sprites och spelpjäser 1 (Första förflyttningen)

Sprites och spelpjäser 2 (Enkel AI)

Sprites och spelpjäser3 Klasser och objekt

Sprites och spelpjäser 4 Klasser och pekare

Sprites och spelpjäser 5 Skapa arméer med knapptryckningar

Sprites och spelpjäser 6 Medlemsfunktioner

Sprites och spelpjäser 7 Arv

Sprites och spelpjäser 8 Multipelt och virtuellt arv

Sprites och spelpjäser 9 Polymorfism

Studsande boll Enkelt kollisionsberäkning

Bakgrunden

Bakgrunden och isometriska plattor

Fog of War

Views När spelplanen är större än skärmen

Text (Visa text för spelaren)

Ljud och musik 1 Ljudeffekt och bakgrundsmusik

Rotation Cosinus, sinus och tangens

Animationsteori

Animation 1 En enkel animationsklass

Animation 2 En explosion med ljud, test

Animation 3 En explosion med ljud, i spelet

Enkelt stridsvagnspel En stridsvagn kör omkring och skjuter

Exempel på collision detect i spel Utökat enkelt stridsvagnsspel där man kan skjuta på varandra

Exempel 2 på collision detect Kod skapad av elev för att demonstrera hur två cirklar kolliderar

Enkelt kortspel

Plattformsspel

Nätverksprogrammering 1 IP, TCP och UDP; grunderna

Nätverksprogrammering 2 UDP, enkelt chattprogram

Nätverksprogrammering 3 Skicka en struct mellan datorer

Färdigt spel Hur gör du för att distribuera spelet


Olika spel som du själv kan bygga vidare på

Squash Enkelt spel som kan byggas ut

Pingis Ett färdigt spel

Hänga gubbe 1 Enkelt spel som kan byggas ut

Space shooter

Flaggklickare Klicka på rätt flagga när landsnamnet syns