Roguelike-opas:Aloitus

Merriki
Loikkaa: valikkoon, hakuun

Oppaassa luodaan pieni pelimoottori ja peli käyttäen hyödyksi PDCurses-kirjastoa (Ncursesin vastine Windowsille). Pienin muutoksin koodi kääntyy myös GNU/Linux-ympäristöissä. Esimerkit on kirjoitettu C++:lla, mutta niiden kääntö muille kielille ei ole suuri haaste. Tarkoitus on, että koodista rakentuu peli, jossa pelaaja seikkailee kartoissa, taistelee vihollisten kanssa, voi käyttää esineitä sekä viholliset voivat tuhota pelaajan, jolloinka peli loppuu siihen. Oppaan lopussa on myös muutama esimerkki moottorin käytöstä.

Aloitus

Aivan ensimmäiseksi otetaan tarvittavat kirjastot käyttöön.

#include <curses.h>
#include <vector>
#include <cmath>


Otsikkotiedosto curses.h sisältää kaikki tekstigrafiikkaan ja näppäimistöön liittyvät asiat. Tiedosto vector auttaa luomaan olennoista listoja, joita on helpompi käsitellä. Cmath on olennainen laskutoimituksia varten, ja tässä projektissa tarvitaan siniä, kosinia ja arkustangettia grafiikkaa varten.

Listausten jälkeen tarvitaan muutama olennainen funktio.

  • void alusta_curses()
  • int main()

Alusta_curses() nimensä mukaisesti alustaa curses-kirjaston käyttöön sopivaksi. Sen sisällä asetetaan arvoja pelille sopivaksi ja luodaan väriyhdistelmät.

Main() on pelin runkofunktio, jonka sisällä itse peli pyörii. Sen sisällä on curses-kirjaston alustamisen kutsu (alusta_curses()), silmukka, jossa tarkistetaan, mitä näppäintä näppäimistöstä on painettu, kutsuu piirtofunktiota ja osaa lopettaa curses-kirjaston käytön.

Otsikkotiedostojen jälkeen ja ennen funktioita luodaan muutama määritelmä grafiikkaa varten:

#define-arvot väreille, mikä tekee lähdekoodista luettavampaa kuin pelkät numerot sanojen sijaan.

Raaka versio projektista voi nyt näyttää tältä:

#include <curses.h>
#include <vector>
#include <cmath>
 
//näytölle tulostuvien värien numerot.
#define vihrea 1
#define punainen 2
#define keltainen 3
#define vihrea2 4
 
 
void alusta_curses() //jotta voidaan hyödyntää kirjastoa, täytyy se ensiksi rakentaa kuntoon sopivilla arvoilla.
{
    initscr(); //alustetaan curses-ikkuna
    keypad(stdscr, TRUE); //otetaan nuolinäppäimet ja vastaavat erikoispainikkeet mukaan
    raw(); //näppäinpuskurointi pois päältä
    noecho(); //ei "kaikua"
    curs_set(0); //ei kursoria vilkkumassa
    start_color(); //värit käyttöön
    //asetetaan värit
    init_pair(vihrea, COLOR_GREEN, COLOR_BLACK);
    init_pair(punainen, COLOR_RED, COLOR_BLACK);
    init_pair(keltainen, COLOR_YELLOW, COLOR_BLACK);
    init_pair(vihrea2, COLOR_WHITE, COLOR_GREEN);
    return;
}
 
int main()
{
	alusta_curses();
	int ch = 0;
    while(ch != 'q') //silmukka loppuu kun painetaan q:ta (tai jos jokin funktio palauttaa -1)
    {
        ch = getch(); //otetaan näppäimistöstä jokin painallus
	}
	endwin(); //sulkee cursesin käytön jälkeen.
    return 0;
}


Ja itse kirjasto pitää linkittää mukaan. GNU/Linux-järjestelmissä annetaan gcc:lle parametri -lncurses ja Windowsissa - riippuen kääntäjästä otetaan mukaan seuraavat tiedostot (jos käyttää PD-Cursesia): pdcurses.a

Ohjelmaa ajettaessa pitäisi ilmestyä täysin musta konsoliruutu, jossa ei edes vilku kursori. Ohjelman voi sammuttaa painamalla q-näppäintä.

Henkilökohtaiset työkalut
Nimiavaruudet
Muuttujat
Toiminnot
Merriki
Työkalut