Programmera spel i C++ för nybörjare/Klass som funktionsvariabel

Från Wikibooks
Hoppa till navigering Hoppa till sök


Detta är ett litet exempel för att visa hur man gör för att lägga in en klass som variabel i en funktion. Du kommer att göra det rätt ofta eftersom det är viktigt att kunna påverka klasser i spelet med olika funktioner, förutsatt att varje spelare i ditt spel är en klassinstans.

Här kommer ett enkelt exempel som enbart kräver att du har en fungerande VC++ express kompilator. Ingen grafik alls:

Variant ett

Om man tycker att det är jobbigt med pekare och pilar kan man använda adressreferensen.

#include "stdafx.h"
#include <iostream>

class student
{
public:
char name[20];
int num;
float score[3];
};

void print(class student &p);

int main()
{
setlocale(LC_ALL, "swedish"); //svenska tecken vid cout
 
class student stu; //Skapa en klassinstans som döps till stu
stu.num=12345; //ge stu ett nummer
strcpy_s(stu.name,"Jöns-Åke"); //Ge stu ett namn
stu.score[0]=67.5;
stu.score[1]=89;
stu.score[2]=78.6;
print(stu); //Kör funktionen
 
return 0;
}
 
 void print(class student &p)
 {
  std::cout<<p.num<<std::endl;
  std::cout<<p.name<<std::endl;
  std::cout<<p.score[0]<<std::endl;
  std::cout<<p.score[1]<<std::endl;
  std::cout<<p.score[2]<<std::endl;
  std::cout<<" "<<std::endl;
 }

Variant två

Gillar man pekare och pilar går den här lika bra:

#include "stdafx.h"
#include <iostream>

class student
{
public:
char name[20];
int num;
float score[3];
};

void print(class student *p);
 
 int main()
 {
 setlocale(LC_ALL, "swedish"); //svenska tecken vid cout
  
 class student stu; //Skapa en klassinstans som döps till stu
 stu.num=12345; //ge stu ett nummer
 strcpy_s(stu.name,"Jöns-Åke"); //Ge stu ett namn
 stu.score[0]=67.5;
 stu.score[1]=89;
 stu.score[2]=78.6;
 print(&stu); //Kör funktionen
  
 return 0;
 }
 
void print(class student *p)
{
 std::cout<< p -> num<<std::endl;
 std::cout<< p -> name<<std::endl;
 std::cout<< p -> score[0]<<std::endl;
 std::cout<< p -> score[1]<<std::endl;
 std::cout<< p -> score[2]<<std::endl;
 std::cout<<" "<<std::endl;
}

Klasser som används i separat headerfil[redigera]

Det är mycket möjligt att du kommer att använda klasser i funktioner när du använder olika headerfiler någon gång i framtiden när du blivit skickligare på att programmera. Det enda du måste vara noga med då är att klassen deklareras i den andra headerfilen istället för i den vanliga kodfilen (och glöm inte #include <iostream> om du får en massa std:: fel). Se mer:

Programmera spel i C++ för nybörjare/C++ headerfiler och cpp filer