Tölvunarfręši 2

Aukaverkefni

1. hluti


Žį er komiš aš aukaverkefninu fyrir žį sem eru ķ Tölvunarfręši 2. Verkefniš felst ķ žvķ aš forrita leikinn Refaveišar. Hann veršur geršur ķ nokkrum žrepum, žannig aš lokaśtgįfan ętti aš geta oršiš nokkuš öflug.

Leikurinn Refaveišar er spilašur į skįkborši og notar eingöngu svörtu reitina. Hundarnir eru fjórir og hefja leik efst į boršinu (į reitum B8, D8, F8 og H8), en žaš er einn refur og hann hefur leik nešst į boršinu, į reit E1. Ķ hverri umferš getur einn hundur fęrt sig į skį (ž.e. į nęsta svarta reit) og refurinn getur fęrt sig um einn reit. Hundarnir geta ašeins fariš įfram, nišur boršiš, en refurinn mį lķka fara aftur į bak. Markmiš hundanna er aš króa refinn af, en refurinn reynir aš komast framhjį hundunum. Refurinn hefur unniš žegar hann kemst ķ röš 8 į boršinu, en hundarnir vinna ef einn žeirra nęr aš komast į sama reit og refurinn.

Athugiš aš bęši hundarnir og refurinn feršast eingöngu į svörtu reitum skįkboršsins. Hvķtu reitirnir eru žvķ ekkert notašir ķ žessum leik. Hér aš nešan er gróf mynd af upphafstöšu leiksins:

    A  B  C  D  E  F  G  H    
   +--+--+--+--+--+--+--+--+  
 8 |  |H1|  |H2|  |H3|  |H4| 8
   +--+--+--+--+--+--+--+--+  
 7 |..|  |..|  |..|  |..|  | 7
   +--+--+--+--+--+--+--+--+  
 6 |  |..|  |..|  |..|  |..| 6
   +--+--+--+--+--+--+--+--+  
 5 |..|  |..|  |..|  |..|  | 5
   +--+--+--+--+--+--+--+--+  
 4 |  |..|  |..|  |..|  |..| 4
   +--+--+--+--+--+--+--+--+  
 3 |..|  |..|  |..|  |..|  | 3
   +--+--+--+--+--+--+--+--+  
 2 |  |..|  |..|  |..|  |..| 2
   +--+--+--+--+--+--+--+--+  
 1 |..|  |..|  |RR|  |..|  | 1
   +--+--+--+--+--+--+--+--+  
    A  B  C  D  E  F  G  H    
Į myndinni eru hundarnir auškenndir meš H1, H2, H3 og H4, en refurinn meš RR. Aušir svartir reitir hafa ".."

Ķ žessum hluta verkefnisins eigiš žiš aš śtfęra forrit sem leyfir tveimur notendum aš spila leikinn. Forritiš į aš geta tekiš viš leikjum frį notendunum (t.d. leikmašur meš refinn myndi kannski hefja leik meš leiknum D2, en leikmašur meš hundana myndi fęra hund 2 til E7), athugaš hvort žeir séu löglegir og ef svo er, prentaš śt nżju stöšuna. Einnig į forritiš aš geta séš hvenęr leiknum er lokiš og lįtiš vita um sigurvegara.

Ašeins veršur hęgt aš nota bókstafagrafķk, žannig aš myndin af boršinu veršur aldrei mjög glęsileg, en žiš getiš notaš myndina aš ofan sem fyrirmynd.

Til aš halda utan um leikboršiš eigiš žiš aš śtfęra klasann sem skilgreindur er hér aš nešan:

class VeidiBord { 
  public:
  	// Smišurinn bżr til boršiš og setur hunda og ref į upphafsreiti
	VeidiBord();
	
	~VeidiBord();
	
	// Birtir nśverandi stöšu leiksins į stašalśttaki
	void PrentaBord();

	// Framkvęmir leik meš hundi, skila ósatt ef ólöglegur leikur
	bool FaeraHund( int nrHund, reitur til );

	// Framkvęmir leik meš ref, skilar ósatt ef ólöglegur leikur
	bool FaeraRef( reitur til );

	// Skilar stašsetningu tiltekins hunds
	reitur StadaHunds( int nrHund );

	// Skilar stašsetningu refs
	reitur StadaRefs();

	// Skilar satt ef leiknum er lokiš
	bool LeikLokid();

	// Skilar satt ef hundarnir hafa sigraš
	bool HundarSigra();

	// Skilar satt ef refurinn hefur sigraš
	bool RefurSigrar();
  private:
	//  
  	// Hér koma žęr földu breytur sem žarf til aš śtfęra klasann
  	//
}; 
Hér er tagiš reitur tvennd meš gildunum rod og dalk, skilgreint meš
struct reitur {
	int rod;
	int dalk;
	reitur( int r=0, int d=0 ): rod(r), dalk(d) { };
};
Athugiš aš jafnvel žó dįlkar séu tilgreindir meš bókstöfum ķ inntaki og śttaki forritsins žį er innri tįknun žeirra meš tölu. Žetta er oft gert til hęgšarauka viš forritun gagnagrinda.

Žiš megiš śtfęra innri gerš klasans VeidiBord eins og žiš viljiš, en veršiš aš hafa višmótiš eins og lżst er aš ofan. Eins žurfiš žiš aš śtfęra ašalforrit sem tekur viš inntaki frį notendum, setur inn leiki žeirra og birtir stöšuna.


Skiliš śtprentun af keyrslu forritsins įsamt forritinu sjįlfu til dęmatķmakennara ykkar fyrir kl. 18:00 föstudaginn 18. febrśar. Žeir munu ekki taka viš verkefnum sem koma seinna.
hh (hja) hi.is, 7. febrśar, 2005.