Fryshuset Gamer Forum
Vill du reagera på det här meddelandet? Registrera dig för forumet med några klick eller logga in för att fortsätta.


Fryshuset Forum
 
HemHem  Latest imagesLatest images  SökSök  Bli medlemBli medlem  Logga inLogga in  

 

 Uppg2 – Gå runt på en karta.

Gå ner 
2 posters
FörfattareMeddelande
Johan




Antal inlägg : 47
Registreringsdatum : 08-09-03

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Uppg2 – Gå runt på en karta.   Uppg2 – Gå runt på en karta. I_icon_minitimetor sep 04, 2008 10: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 Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




Antal inlägg : 47
Registreringsdatum : 08-09-03

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Hero.h   Uppg2 – Gå runt på en karta. I_icon_minitimetor sep 04, 2008 10: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 Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




Antal inlägg : 47
Registreringsdatum : 08-09-03

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Room.h   Uppg2 – Gå runt på en karta. I_icon_minitimetor sep 04, 2008 10:50 am

Kod:

http://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 Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




Antal inlägg : 47
Registreringsdatum : 08-09-03

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Hero.cpp   Uppg2 – Gå runt på en karta. I_icon_minitimetor sep 04, 2008 10:52 am

Kod:

http://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 Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




Antal inlägg : 47
Registreringsdatum : 08-09-03

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Room.cpp   Uppg2 – Gå runt på en karta. I_icon_minitimetor sep 04, 2008 10:55 am

Kod:

http://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 Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




Antal inlägg : 47
Registreringsdatum : 08-09-03

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: main.h   Uppg2 – Gå runt på en karta. I_icon_minitimetor sep 04, 2008 10:56 am

Sist men inte minst...

Kod:

http://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 Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




Antal inlägg : 47
Registreringsdatum : 08-09-03

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Sv: Uppg2 – Gå runt på en karta.   Uppg2 – Gå runt på en karta. I_icon_minitimetor sep 04, 2008 4: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 Gå ner
http://www.cplusplus.com/doc/tutorial/
Becca




Antal inlägg : 10
Registreringsdatum : 08-09-01

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Sv: Uppg2 – Gå runt på en karta.   Uppg2 – Gå runt på en karta. I_icon_minitimetor sep 04, 2008 8: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 Gå ner
Johan




Antal inlägg : 47
Registreringsdatum : 08-09-03

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Sv: Uppg2 – Gå runt på en karta.   Uppg2 – Gå runt på en karta. I_icon_minitimefre sep 05, 2008 9: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 Gå ner
http://www.cplusplus.com/doc/tutorial/
Becca




Antal inlägg : 10
Registreringsdatum : 08-09-01

Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Sv: Uppg2 – Gå runt på en karta.   Uppg2 – Gå runt på en karta. I_icon_minitimefre sep 05, 2008 10:06 am

Damn >.< thought I had you there ^^
Till överst på sidan Gå ner
Sponsored content





Uppg2 – Gå runt på en karta. Empty
InläggRubrik: Sv: Uppg2 – Gå runt på en karta.   Uppg2 – Gå runt på en karta. I_icon_minitime

Till överst på sidan Gå ner
 
Uppg2 – Gå runt på en karta.
Till överst på sidan 
Sida 1 av 1

Behörigheter i detta forum:Du kan inte svara på inlägg i det här forumet
Fryshuset Gamer Forum :: Programmering :: Koder-
Hoppa till: