| | Uppg2 – Gå runt på en karta. | |
|
| Författare | Meddelande |
|---|
Johan
Antal inlägg: 47 Join date: 08-09-03
 | Rubrik: Uppg2 – Gå runt på en karta. tor sep 04, 2008 9:39 am | |
| Ok, jag har skrivit programmet ordentligt och försökt kommentera allting så att det ska vara lätt att förstå vad som gör vad i koden. Läs, begrunda och använd som underlag när ni skriver era egna program. Notera att detta endast är ETT sätt som programmet skulle kunna se ut. Kopiera inte bara in den här koden nu, utan använd den som informationskälla. Skriv om era egna program lite så att jag kan se att ni skrivit dem själva. De som har misstänkt likt kod kan få presentera koden för mig muntligt så att jag kan se att ni förstått hur den fungerar. Hoppas att detta kan vara behjälpligt. Mvh, Johan |
|
 | |
Johan
Antal inlägg: 47 Join date: 08-09-03
 | Rubrik: Hero.h tor sep 04, 2008 9:40 am | |
| | Kod: | // Hero.h //-----------
#include <iostream> //inkluderar in- och utmatningsrutiner #include <string> //inkluderar string
using namespace std; //förenklar användandet av cout,cin,string m.m.
//spelarobjektets klass class Hero{
private: int x,y; //håller reda på possitionen string name; //namnet på hjälten
//Vad mer kan en hjälte behöva?
public: Hero(); //Konstruktor int getX(void); //Hämtar x-värdet int getY(void); //Hämtar y-värdet void go(string direction, int width, int height); //låter användaren förflytta sig mellan rummen.
}; //Glöm inte ;
|
|
|
 | |
Johan
Antal inlägg: 47 Join date: 08-09-03
 | Rubrik: Room.h tor sep 04, 2008 9:50 am | |
| | Kod: | //Room.h //----------
#include <iostream> //inkluderar in- och utmatningsrutiner #include <string> //inkluderar string
using namespace std; //förenklar användandet av cout,cin,string m.m.
//Varje rum i världen är ett eget objekt class Room{
private: string description; //Beskrivningen av rummet //Vad mer kan behövas i ett rum?
public: Room(); //Konstruktor string getDesc(void); //Hämtar rumsbeskrivningen void setDesc(string descr); //Ändrar rumsbeskriving
}; //Glöm inte ;
|
|
|
 | |
Johan
Antal inlägg: 47 Join date: 08-09-03
 | Rubrik: Hero.cpp tor sep 04, 2008 9:52 am | |
| | Kod: | //Hero.cpp //------------
#include <iostream> //inkluderar in- och utmatningsrutiner #include <string> //inkluderar string
#include "Hero.h" //includerar klassdefinitionen Hero
using namespace std; //förenklar användandet av cout,cin,string m.m.
//Konstruktorer //---------------- Hero::Hero(){ x = 0; y = 0; name = "Unnamed hero"; }
//GET-funktioner //----------------
int Hero::getX(void){ return x; }
int Hero::getY(void){ return y; }
//Andra funktioner //-----------------
//Gå-funktionen //Kollar ifall användaren kan gå och i så fall ändrar Hero-objektets position. void Hero::go(string direction, int width, int height){
//Lägg felmeddelanden i separata variablar string cantGo = "\nI'm sorry, I can't go that way.\n\n"; string noDirection = "\nI'm sorry, where do you want me to go?\n\n";
//Kontrollera att kommandot har rätt syntax if(direction == "north" || direction == "North" || direction == "NORTH" || direction == "n" || direction == "N"){
//I så fall; Kontrollera att det går att förflytta sig if(y != 0){ y--; //I så fall; Ändra position }else{ cout << cantGo; //Annars; Skriv ut felmeddelande } //Upprepa för de andra vädersträcken... }else if(direction == "south" || direction == "South" || direction == "SOUTH" || direction == "s" || direction == "S"){ if(y != (height-1)){ y++; }else{ cout << cantGo; } }else if(direction == "west" || direction == "West" || direction == "WEST" || direction == "w" || direction == "W"){ if(x != 0){ x--; }else{ cout << cantGo; } }else if(direction == "east" || direction == "East" || direction == "EAST" || direction == "e" || direction == "E"){ if(x != (width-1)){ x++; }else{ cout << cantGo; } }else{ cout << noDirection;
} //if(direction == "nor... } //void Hero::g...
|
|
|
 | |
Johan
Antal inlägg: 47 Join date: 08-09-03
 | Rubrik: Room.cpp tor sep 04, 2008 9:55 am | |
| | Kod: | //Room.cpp //-------------
#include <iostream> //inkluderar in- och utmatningsrutiner #include <string> //inkluderar string
#include "Room.h" //includerar klassdefinitionen Room
using namespace std; //förenklar användandet av cout,cin,string m.m.
//Konstruktorer //---------------- Room::Room(){ description = "This is an empty room."; }
//GET-funktioner //---------------- string Room::getDesc(void){ return description; }
//SET-funktioner //---------------- void Room::setDesc(string descr){ description = descr; }
|
|
|
 | |
Johan
Antal inlägg: 47 Join date: 08-09-03
 | Rubrik: main.h tor sep 04, 2008 9:56 am | |
| Sist men inte minst... | Kod: | //main.cpp //------------
#include <iostream> //inkluderar in- och utmatningsrutiner #include <string> //inkluderar string #include <conio.h> //Behövs för att vi ska kunna använda funktionen "getch()"
#include "Hero.h" //includerar klassdefinitionen Hero #include "Room.h" //includerar klassdefinitionen Room
using namespace std; //förenklar användandet av cout,cin,string m.m.
//MAIN //------------- int main(){
//Lägg kartans bredd och höjd i sparata variabler const int width = 3; const int height = 3; //Skapa de objekt som kommer behövas Hero jag; //Spelarens avatar Room rum[width][height]; //2D Room-array //Ändra varje rums beskriving //Norra raden rum[0][0].setDesc("You are now in the NW room."); rum[1][0].setDesc("You are now in the N room."); rum[2][0].setDesc("You are now in the NE room."); //Mittenraden rum[0][1].setDesc("You are now in the W room."); rum[1][1].setDesc("You are now in the middle room."); rum[2][1].setDesc("You are now in the E room."); //Södra raden rum[0][2].setDesc("You are now in the SW room."); rum[1][2].setDesc("You are now in the S room."); rum[2][2].setDesc("You are now in the SE room."); //GAME-LOOP //------------- bool game = true; while(game){ //Skriv ut beskrivningen i rummet som "jag" är i. (typ som rum[x][y]) cout << endl << rum[jag.getX()][jag.getY()].getDesc() << endl; //Läs in spelarens kommando cout << "Where do you want to go?: "; string command; cin >> command; //Kontrollera ifall spelaren vill sluta if(command == "Q" || command == "q" || command == "Quit" || command == "quit" || command == "QUIT"){ cout << "\n\nThank you for playing!\n\n Press any button to Quit."; game = false; }else{ //Om spelaren INTE vill sluta spelet; Gör förflyttning. jag.go(command,width,height); } }
//Stäng av programmet getch(); return 0; }
|
|
|
 | |
Johan
Antal inlägg: 47 Join date: 08-09-03
 | Rubrik: Re: Uppg2 – Gå runt på en karta. tor sep 04, 2008 3:56 pm | |
| hmm.. det ser ganska mastigt ut när man tittar på den såhär. Men jag skulle tro att det beror ganska mycket på alla kommentarerna. Prova att kopiera in koden i Codeblocks eller notepad++ så att ni får färglagda highlights på de olika delarna. Tycker ni att kommentarerna är i vägen kan ni även prova att ta bort dem och se om det blir tydligare. |
|
 | |
Becca
Antal inlägg: 10 Join date: 08-09-01
 | |
 | |
Johan
Antal inlägg: 47 Join date: 08-09-03
 | |
 | |
Becca
Antal inlägg: 10 Join date: 08-09-01
 | Rubrik: Re: Uppg2 – Gå runt på en karta. fre sep 05, 2008 9:06 am | |
| Damn >.< thought I had you there ^^ |
|
 | |
| | Uppg2 – Gå runt på en karta. | |
|