Gå til innhold

Tanker og forslag til mitt første spill


Anbefalte innlegg

Videoannonse
Annonse

det kan også være klokt å lære seg litt om klasser når du først er i gang med C++.

C++ er jo hovedsakelig ment for å være objektorientert, ellers ville du jo bare ha brukt C. right?

 

Klasser er relativt simpelt å lære seg, kan være tungt å bruke de i starten, men når du er vant med de så er de veldig handy. Pluss at du kan legge de inni egne .cpp og .h filer som du kan inkludere i mainkoden. Klasser gjør at du kan "wrappe" inn datatyper slik at de ikke blir globale og uoversiktelige.

 

her er et dårlig eksempel på en klasse:

player.h (headeren) feks:

class Player
{
  public:
 Player();
 ~Player();

 void Init(int num_lives);
 void MovePlayer(int x, int y);
 int Shoot(int strength);

 void Update(); //her inne kan du feks oppdatere alt mellom himmel og jord
				//feks kan du "handle" flytting, skyting, bounding-box deteksjon osv..

  private:

 int life_energy;
 int num_lives;
 int score;
};

de er tre forskjellige operatorer eller hva jeg skal kalle de (er litt trøtt nå så må unnskylde meg at jeg ikke bruker riktige formulering). De heter public, protected og private anyway. Foreløpig kan du egentlig bare bruke public. De to andre er for arv og sånt, men det trenger du ikke lære deg med en gang.

 

Men feks istedenfor å ha masse globale variabler så ligger variablene dine inni objektet, dvs en instanse av en klasse. Klassen er bare en beskrivelse over det du vi lage.

main()
{
  Player player;   //lager en instanse av Player klassen
  Player spaceship_enemy; //en ny instanse
  Player boss_enemy;	  //enda en instanse

  player.Init(4);  //player får feks 4 liv

  spaceship_enemy.Init(1);		 //ett liv
  spaceship_enemy.Strength(20);

  boss_enemy.Init(1);
  boss_enemy.Strength(100);   //bossen har 100 i styrke.

  while(1)
  {
 player.Update();
 spaceship_enemy.Update();

 //en annen klasse eller global funksjon kan feks tegne disse spritene.
 draw(player);
 draw(spaceshipt...); osv..
  }
}

Player.cpp feks:

Player::Player()
{
}

Player::~Player()
{
}

void Player::Update()
{
//...
}

//osv...

//dette var et veldig dårlig eksempel, men håper du forstår at dette kan gjøre koden din

//mye mer oversiktelig og enkelere å håndtere.

Lenke til kommentar

Det er også greit å venne seg til vanlige konvensjoner når det gjelder hvordan man skriver funksjonsnavn og variable. Funksjonsnavn:

myFunc()
MyFunc()
my_func()

Variable:

myVar
my_var

Konstanter (#define, const) og enumerasjoner:

MY_CONST
MyConst

Klasser (class) og datastrukturer (struct):

MyClass

Konvensjon i Unix for typedefinisjoner (typedef):

struct MyStruct { int i; };
typedef struct MyStruct mystruct_t;

Du står selvfølgelig fritt til å skrive hva du selv vil, men de fleste ender opp med dette her--og det er mer leselig for andre som leser koden din. ;)

Endret av LostOblivion
Lenke til kommentar
  • 4 uker senere...
Gjest Slettet+9871234
Hei! Jeg er en sånn folk flest vil kalle nybegynner i C++. Har ikke programmert i mer enn noen uker i C++. Tidligere erfaringer er smått, som i Game Maker, om noen er kjent med scriptspråket der.

 

Dette er andre utgave av programmet (det første var tungt skrevet og ikke så effektivt).

 

Har du noen tanker angående spillet, som forbedring, bedre/raskere måter å skrive koden på osv. del dem med meg er du snill. Jeg vil at koden min skal være mest effektiv og rask som mulig. Jeg vil jo ikke utvikle dårlige vaner o.l.

 

Here is the code:

Dersom du kjenne Game Maker er det jo et av skripting språkene som ligner litt på C++ i syntax. Det kan være lurt å kombinere Game Maker for fleksibilitet med C++ kode til selve spill motoren.

 

Referanse:

 

http://www.courseptr.com/ptr_detail.cfm?gr...8-1-58450-452-8

 

Andre utgave hare et eget kapittel 14 om hvordan scripting kode skal embeddes i C++ prosjekter.

 

Ytterligere informasjon:

 

https://www.diskusjon.no/index.php?showtopic=633431&st=43

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...