Professional Documents
Culture Documents
Napomene:: FIT Coding Challenge 2013
Napomene:: 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();
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;
return 0;