Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

FIT Coding Challenge 2013

Napomene:
*Kreirajte .txt fajl pod vaim imenom i prezimenom, te u njega kopirajte rjeenje
zadataka.
**Tokom izrade rjeenja nije dozvoljeno koritenje help-a.
***Tokom izrade rjeenja mogu biti pokrenuta samo tri programa: MS Visual Studio,
Adobe Reader, Notepad (u koji ete kopirati vaa rjeenje).
Download zadatka i upload rjeenja vrite putem ftp servera na adresi: ftp://ftp.fit.ba,
username: student_cpp i password: student_cpp.

Zadatak Snake:
Koristei dati programski kod implementirati sljedee funkcionalnosti:
a) Metode za kretanje zmije po matrici (zmija je predstavljena znakom $).
b) Automatsko generisanje nove hrane kada ostane samo jedan smile ().
c) Svaki sakupljeni smile igrau treba da donese jedan bod. Veliinu zmije poveati
za jedan $ nakon svaka 2 nova boda.
d) Detektovati kraj igre (Game over).
e) Automatsko kretanje zmije.

Programski kod:
#include<iostream>
#include <conio.h>
using namespace std;
const int sirina=15;
const int visina=15;
//Pomona struktura
struct Polje
{
char _oznaka;
bool _zmija;
};
struct Igrica
{
Polje _matrica[sirina][visina];
int _glavaPozRed;
int _glavaPozKol;
int _repPozRed;
int _repPozKol;
void UcitajOkvir();

FIT Coding Challenge 2013


void UcitajPocetniLevel();
void Ispis();

void
void
void
void

PomjeriDesno();
PomjeriLijevo();
PomjeriGore();
PomjeriDolje();

};
void Igrica::UcitajOkvir()
{
//Postaviti rub matrice (zid)
for(int i=0; i<sirina; i++)
for(int j=0; j<visina; j++)
{
if(i==0 || i==visina-1 || j==0 || j==sirina-1)
{
_matrica[i][j]._oznaka = '*';
_matrica[i][j]._zmija = false;
}
}
}
void Igrica::UcitajPocetniLevel()
{
//Poetna pozicija zmije i prazna polja matrice
for(int i=1; i<sirina-1; i++)
{
for(int j=1; j<visina-1; j++)
{
_matrica[i][j]._oznaka=' ';
if(i==visina-2 && (j==1 || j==2 || j==3))
_matrica[i][j]._zmija = true;
else
_matrica[i][j]._zmija = false;
}
}
//Poetna pozicija glave i repa zmije
_glavaPozRed = visina-2;
_glavaPozKol = 3;
_repPozRed = visina-2;
_repPozKol = 1;
//Random popuniti 5 polja sa hranom
for(int i=0; i<5; i++){
int r = rand()%sirina;
int k = rand()%visina;
//Pozicija hrane ne moe biti na rubu, niti na mjestu gdje se zmija
//poetno nalazi ili na ve zauzetoj poziciji
if(_matrica[r][k]._zmija || r==visina-1 || r==0 || k==0 || k==sirina1 || _matrica[r][k]._oznaka==0x01)
i--;
else
_matrica[r][k]._oznaka=0x01;

FIT Coding Challenge 2013


}
}
void Igrica::Ispis()
{
for(int i=0; i<sirina; i++)
{
for(int j=0; j<visina; j++)
if(_matrica[i][j]._zmija)
cout<<"$ ";
else
cout<<_matrica[i][j]._oznaka<<" ";
cout<<endl;
}
cout<<endl;
}
void Igrica::PomjeriDesno()
{
cout<<"DESNO\n";
}
void Igrica::PomjeriLijevo()
{
cout<<"LIJEVO\n";
}
void Igrica::PomjeriGore()
{
cout<<"GORE\n";
}
void Igrica::PomjeriDolje()
{
cout<<"DOLjE\n";
}
int main()
{
Igrica snake;
snake.UcitajOkvir();
snake.UcitajPocetniLevel();
snake.Ispis();
//Esc za prekid
char ch;
do{
ch=getch();
if(ch!='\0')
{
ch=getch();
if(ch=='M')
snake.PomjeriDesno();
else
if(ch=='K')
snake.PomjeriLijevo();
else if(ch=='H')
snake.PomjeriGore();
else if(ch=='P')

FIT Coding Challenge 2013


snake.PomjeriDolje();
}
}while(ch!='\x1b');

return 0;

You might also like