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  

 

 Uppg3 – Klassobjekt som medlem (fight simulator)

Gå ner 
FörfattareMeddelande
Johan




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

Uppg3 – Klassobjekt som medlem (fight simulator) Empty
InläggRubrik: Uppg3 – Klassobjekt som medlem (fight simulator)   Uppg3 – Klassobjekt som medlem (fight simulator) I_icon_minitimeons sep 10, 2008 1:02 am

Jag har nu kommenterat färdigt koden för min fight simulator. Detta är snäppet lite lite mer utvecklat än det som jag lämnat som specifikationer för betyget godkänt. Låt er inspireras och utveckla vidare.

Som jag sade i tidigare projekt; Kopiera inte bara koden, utan använd den endast som underlag för ert eget program. Ser jag att ni ert program är aldeles för likt kommer jag att be er förklara för mig hur det funkar.

Tycker du att det ser mastigt ut, kopiera in koden i codeblocks, visual studio eller bara Notepad++ så att du får färgade betoningar i koden. Det kan även bero på alla kommentarerna. Testa att ta bort dem och se om du tycker att koden blir begripligare.

Lycka till!
Till överst på sidan Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




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

Uppg3 – Klassobjekt som medlem (fight simulator) Empty
InläggRubrik: Sv: Uppg3 – Klassobjekt som medlem (fight simulator)   Uppg3 – Klassobjekt som medlem (fight simulator) I_icon_minitimeons sep 10, 2008 1:04 am

Kod:

http://Fighter.h
//-------------

//ifndef och define gör det lättare att kompilera projektet om man har fler includes av denna fil
#ifndef FIGHTER_H_INCLUDED
#define FIGHTER_H_INCLUDED

//Includes
#include <iostream>
#include <string>
#include "Weapon.h"

using namespace std;

//Fighter -definitionen. Det är två av dessa som ska slåss mot varrandra i main.
class Fighter{
private:
   string name; //Fighterns namn
   int hp;   //Fighterns hälsa. Om hp blir noll så ska Fightern dö.
   int skill;   //Färdighetsvärdet. Hur duktig Fightern är på att slåss.
   Weapon weapon; //Vapnet som Fightern "har".

public:
   Fighter(string n); //konstruktor
   
   //GET-funktioner
   int getHp(void){return hp;}
   string getName(void){return name;}

   //SET-funktioner
   void death(void){hp=0;}//Dödar Fightern
   
   //Andra funktioner
   void print(void); //skriver ut alla fighterns värden
   void attack(Fighter * enemy); //attackerar en fiende
   void damage(int dam); //tar skada från fienden
}; //glöm inte ;


//avsluta ifndef (glöm inte att tala om hur den såg ut i början på filen. Det anses vara snyggare kod.)
#endif //#ifndef FIGHTER_H_INCLUDED

Till överst på sidan Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




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

Uppg3 – Klassobjekt som medlem (fight simulator) Empty
InläggRubrik: Sv: Uppg3 – Klassobjekt som medlem (fight simulator)   Uppg3 – Klassobjekt som medlem (fight simulator) I_icon_minitimeons sep 10, 2008 1:05 am

Kod:

http://Weapon.h
//---------------

//Om man använder MS Visual Studio kan man bara skriva #pragma once istället för #ifndef osv.
#pragma once

//Includes
#include <iostream>
#include <string>

using namespace std;

//Definition av klassen Weapon. Alla fighters ska bära ett vapen.
class Weapon{
private:
   string name; //Vapnets namn
   int dam; //Vapnets skada
   string attackMess; //Meddelande som skrivs ut när vapnet används

public:
   Weapon(void); //Konstruktor
   
   //GET-funktioner
   string getAttack(void){return attackMess;}
   int getDam(void){return dam;}
   string getName(void){return name;}
   
   //Andra funktioner
   void print(void); // Skriver ut vapnets värden.

}; //Glöm inte ;

Till överst på sidan Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




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

Uppg3 – Klassobjekt som medlem (fight simulator) Empty
InläggRubrik: Sv: Uppg3 – Klassobjekt som medlem (fight simulator)   Uppg3 – Klassobjekt som medlem (fight simulator) I_icon_minitimeons sep 10, 2008 1:06 am

Kod:

http://globals.h
//-------------

//ifndef och define gör det lättare att kompilera projektet om man har fler includes av denna fil
#ifndef GLOBALS_H_INCLUDED
#define GLOBALS_H_INCLUDED

//Includes
#include <time.h>

//Om man skapar en onämnd namespace såhär, så kan man använda globala funktioner i alla andra filer som inkluderar "globals.h"
namespace{

   //Tärningsfunktionen. Returnerar en framslumpad siffra mellan min- och max-värdet.
   int dice(int min, int max){   
      
      int diceVal = rand() % (max - min +1) + min;
      
      return diceVal;
   }
}

#endif //#ifndef GLOBALS_H_INCLUDED
Till överst på sidan Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




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

Uppg3 – Klassobjekt som medlem (fight simulator) Empty
InläggRubrik: Sv: Uppg3 – Klassobjekt som medlem (fight simulator)   Uppg3 – Klassobjekt som medlem (fight simulator) I_icon_minitimeons sep 10, 2008 1:07 am

Kod:

http://Fighter.cpp
//--------------

//Includes systemfiler
#include <iostream>
#include <string>

//Includes egna filer
#include "globals.h"
#include "Fighter.h"
#include "Weapon.h"

using namespace std;


//Konstruktorer
//----------------

Fighter::Fighter(string n){
   this->name = n;
   this->hp = dice(3000,5000); //Slumpa fram Fighterns hp
   this->skill = dice(20,80); //Slumpa fram Fighterns färdighetsvärde
}


//Andra metoder
//-----------------

//Skriver ut alla fighterns värden
void Fighter::print(void){
   cout << name << endl;
   cout << "HP: " << hp << endl;
   cout << "Skill:" << skill << endl;
   cout << "Weapon: ";
   weapon.print(); //Anropa vapnets print() funktion. dvs. skriv ut vilket vapen Fightern har
}

//Attackerar en fiende. Notera att enemy är en penkare och att vi i main skickat med en adress.
void Fighter::attack(Fighter * enemy){
   //Kolla ifall resultatet på en D100 (framslumpat tal mellan 1-100) är mindre än färdighetsvärdet
   if(dice(1,100) <= skill){
      //I så fall: Skriv ut attacken..
      cout << name << " " << weapon.getAttack() << " " << weapon.getName() << ".\n";
      cout << enemy->getName() << " looses " << weapon.getDam() << " HP.\n";
      enemy->damage(weapon.getDam()); // ..och dra av Fighterns vapens dam-värde på fiendens hp.
   }else{
      //Om D100 bler högre än färdighetsvärdet: Skriv ut att han har missat.
      cout << name << " misses.\n";
   }
   
}   

//Låter fightern ta skada från fiendens attack
void Fighter::damage(int dam){
   hp -= dam;
}
Till överst på sidan Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




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

Uppg3 – Klassobjekt som medlem (fight simulator) Empty
InläggRubrik: Sv: Uppg3 – Klassobjekt som medlem (fight simulator)   Uppg3 – Klassobjekt som medlem (fight simulator) I_icon_minitimeons sep 10, 2008 1:09 am

Kod:

http://Weapon.cpp
//------------

//Includes systemfiler
#include <iostream>
#include <string>

//Includes egna filer
#include "globals.h"
#include "Weapon.h"

using namespace std;


//I konstruktorn slumpar vi fram ett fördefinierat vapen.
//Dam-värdet slumpas ut mellan olika parametrar beroende på vilket vapen det blev.
//Notera att jag använt en Switch, (en variant av en if-sats), och att dam-värdet bara slumpas ut i konstruktorn. I mitt spel är skadan ett konstant värde sedan det väl fått sin siffra.
Weapon::Weapon(void){
   
   switch (dice(0,10)) {
      case 1:
        this->name = "Tiny Knife";
        this->dam = dice(10,20);
        this->attackMess = " carefully swings a ";
        break;
      case 2:
        this->name = "Hammer of Judgement";
        this->dam = dice(50,200);
        this->attackMess = " uses the powerfull ";
        break;
      case 3:
        this->name = "Fire Ball";
        this->dam = dice(100,300);
        this->attackMess = " magically steers a ";
        break;
      case 4:
        this->name = "Love Bite";
        this->dam = dice(1,1000);
        this->attackMess = " has love in the eyes and gives out a ";
        break;
      case 5:
        this->name = "Wierd Thing";
        this->dam = dice(50,750);
        this->attackMess = " swigingy swoops the shweetness with a ";
        break;
      case 6:
        this->name = "Sword of Lightning";
        this->dam = dice(500,100);
        this->attackMess = " flashes with a ";
        break;
      case 7:
        this->name = "Massive Destruction";
        this->dam = dice(1000,2000);
        this->attackMess = "unleashes the power of ";
        break;
      case 8:
        this->name = "Handy Mace";
        this->dam = dice(30,100);
        this->attackMess = " swings the ";
        break;
      case 9:
        this->name = "Simple Sword";
        this->dam = dice(40,150);
        this->attackMess = " is wishwasing around with a ";
        break;
      case 10:
        this->name = "Ice Bolt";
        this->dam = dice(200,400);
        this->attackMess = " summons a freezing ";
        break;
      default:
        this->name = "Weaponless Fist";
        this->dam = dice(5,20);
        this->attackMess = " gives a nice punch with a ";
        break;
   }

}


//Skriv ut vapnets namn och dam-värde.
void Weapon::print(void){
   cout << name << " (dam: " << dam << ")";
}


Senast ändrad av Johan den ons sep 10, 2008 1:13 am, ändrad totalt 1 gång
Till överst på sidan Gå ner
http://www.cplusplus.com/doc/tutorial/
Johan




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

Uppg3 – Klassobjekt som medlem (fight simulator) Empty
InläggRubrik: Sv: Uppg3 – Klassobjekt som medlem (fight simulator)   Uppg3 – Klassobjekt som medlem (fight simulator) I_icon_minitimeons sep 10, 2008 1:10 am

Kod:

http://main.cpp
//-----------

//Includes systemfiler
#include <iostream> //för cout, cin, mm.
#include <string> //för string
#include <conio.h> //för getch()
#include <time.h> //för srand() och rand()
#include <windows.h> //för sleep() och system()

//Includes egna filer
#include "Fighter.h"
#include "Weapon.h"

using namespace std;

//MAIN
//-------------
int main(){
   
   // Hämta en seed från datorns klocka.
   //(Behövs för att vi ska kunna slumpa nya tal varje gång programmet körs.)
   srand ( time(NULL) );

   //Skapa de två fightbottarna
   Fighter bot1("Guybrush Threepwood");
   Fighter bot2("Morgan Freeman");

   //Introducerar med att skriva ut vilka Fighters som har skapats.
   cout << "Creating two fightbots:";
   cout << "\n\n-------------------------\n";
   bot1.print();
   cout << "\n\n-------------------------\n";
   bot2.print();
   cout << "\n\n-------------------------\n\nPress any button.";
   getch(); //Vänta på inmatning av ett tecken
   system("cls"); //Töm skärmen

   cout << "\n\n\n\n\n\n            Get ready for the fight!\n";
   Sleep(2000); //Stanna upp programmet i 2 sekunder
   system("cls"); //Töm skärmen

   //GAME-LOOP
   //----------------
   bool game = true;
   while(game){
      //Skriv ut bottarnas hp-värden
      cout << bot1.getName() << endl << "HP: " << bot1.getHp() << "\n\n";
      cout << bot2.getName() << endl << "HP: " << bot2.getHp() << "\n\n";
      Sleep(1000); //Stanna upp programmet i 1 sekund
      
      //Låt bottarna attakera varandra.
      //Notera att jag skickar med adressen till bottarnas
      //minnesplats som argument (& innan objektnamnet).
      bot1.attack(&bot2);
      Sleep(1000);
      bot2.attack(&bot1);
      Sleep(1000);
      system("cls");
      
      //Kontrollera ifall BÅDA har dött.
      if (bot1.getHp() < 0 && bot2.getHp() < 0){
         
         //I så fall: Nollställ hp-värdena..
         bot1.death();
         bot2.death();
         
         //.. skriv ut bottarnas hp...
         cout << bot1.getName() << endl << "HP: " << bot1.getHp() << "\n\n";
         cout << bot2.getName() << endl << "HP: " << bot2.getHp() << "\n\n";
         Sleep(4000);
         system("cls");
         
         //.. och rapportera resultat.
         cout << "\n\n\n\n\n\n            Both are dead. It was a meningless fight!";
         Sleep(2000);
         system("cls");
         
         //Stäng till sist av loopen.
         game=false;

      //Om inte båda har dött, kanske bara en av dem har dött.
      //Har bot1 dött?
      }else if (bot1.getHp() < 0){
         bot1.death();
         cout << bot1.getName() << endl << "HP: " << bot1.getHp() << "\n\n";
         cout << bot2.getName() << endl << "HP: " << bot2.getHp() << "\n\n";
         Sleep(2000);
         system("cls");
         cout << "\n\n\n\n\n\n      " << bot1.getName() << " is defeted. " << bot2.getName() << " wins the fight!";
         Sleep(4000);
         system("cls");
         game=false;
      //Har bot2 dött?
      }else if (bot2.getHp() < 0){
         bot2.death();
         cout << bot1.getName() << endl << "HP: " << bot1.getHp() << "\n\n";
         cout << bot2.getName() << endl << "HP: " << bot2.getHp() << "\n\n";
         Sleep(4000);
         system("cls");
         cout << "\n\n\n\n\n\n            " << bot2.getName() << " is defeted. " << bot1.getName() << " wins the fight!";
         Sleep(2000);
         system("cls");
         game=false;
      }

   }
   
   
   //Avslut
   cout << "\n\n\n\n\n\n            Thank you for watching!\n\n\n\n\n\n            Press any button to quit.";
   getch();
   return 0;
}

Till överst på sidan Gå ner
http://www.cplusplus.com/doc/tutorial/
Sponsored content





Uppg3 – Klassobjekt som medlem (fight simulator) Empty
InläggRubrik: Sv: Uppg3 – Klassobjekt som medlem (fight simulator)   Uppg3 – Klassobjekt som medlem (fight simulator) I_icon_minitime

Till överst på sidan Gå ner
 
Uppg3 – Klassobjekt som medlem (fight simulator)
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: