Fryshuset Forum
IndexIndex  ­Vanliga frågorVanliga frågor  ­SökSök  ­MedlemslistaMedlemslista  ­AnvändargrupperAnvändargrupper  ­Bli medlemBli medlem  ­Logga inLogga in  
Skapa nytt ämne   Svara på ämnetShare | 
 

 Uppg2 – Gå runt på en karta.

Föregående ämne Nästa ämne Go down 
FörfattareMeddelande
Johan



Antal inlägg: 47
Join date: 08-09-03

InläggRubrik: 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
Till överst på sidan Go down
Användarens profil http://www.cplusplus.com/doc/tutorial/
Johan



Antal inlägg: 47
Join date: 08-09-03

InläggRubrik: 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 ;
Till överst på sidan Go down
Användarens profil http://www.cplusplus.com/doc/tutorial/
Johan



Antal inlägg: 47
Join date: 08-09-03

InläggRubrik: 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 ;
Till överst på sidan Go down
Användarens profil http://www.cplusplus.com/doc/tutorial/
Johan



Antal inlägg: 47
Join date: 08-09-03

InläggRubrik: 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...
Till överst på sidan Go down
Användarens profil http://www.cplusplus.com/doc/tutorial/
Johan



Antal inlägg: 47
Join date: 08-09-03

InläggRubrik: 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;
}

Till överst på sidan Go down
Användarens profil http://www.cplusplus.com/doc/tutorial/
Johan



Antal inlägg: 47
Join date: 08-09-03

InläggRubrik: 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;
}
Till överst på sidan Go down
Användarens profil http://www.cplusplus.com/doc/tutorial/
Johan



Antal inlägg: 47
Join date: 08-09-03

InläggRubrik: 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.
Till överst på sidan Go down
Användarens profil http://www.cplusplus.com/doc/tutorial/
Becca



Antal inlägg: 10
Join date: 08-09-01

InläggRubrik: Re: Uppg2 – Gå runt på en karta.   tor sep 04, 2008 7:21 pm

Johan skrev:

//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.");


BUGG!

Om du har satt width och height till 3, så kommer du behöva skriva ut nummerkombinationerna för 0123. Alltså, du måste sätta width och height till 2 Laughing
Till överst på sidan Go down
Användarens profil
Johan



Antal inlägg: 47
Join date: 08-09-03

InläggRubrik: Re: Uppg2 – Gå runt på en karta.   fre sep 05, 2008 8:49 am

Becca skrev:


BUGG!

Om du har satt width och height till 3, så kommer du behöva skriva ut nummerkombinationerna för 0123. Alltså, du måste sätta width och height till 2 Laughing



Det är ett vettigt antagande. Om en array har platserna [0][1][2] kan man tänka att man ska deklarera arrayen med rum[2].. Men faktum är att så är det inte. Vid array-deklarationen ska man ange hur många platser den ska ha, inte vad den sista platsen ska heta. Altså måste vi deklarera den som rum[3]. Provkör får du se.
Till överst på sidan Go down
Användarens profil http://www.cplusplus.com/doc/tutorial/
Becca



Antal inlägg: 10
Join date: 08-09-01

InläggRubrik: Re: Uppg2 – Gå runt på en karta.   fre sep 05, 2008 9:06 am

Damn >.< thought I had you there ^^
Till överst på sidan Go down
Användarens profil
 

Uppg2 – Gå runt på en karta.

Föregående ämne Nästa ämne Till överst på sidan 
Sida 1 av 1

Permissions of this forum:Du kan inte svara på inlägg i det här forumet
Fryshuset Gamer Forum :: Programmering :: Koder-
Skapa nytt ämne   Svara på ämnet