FAQ | Points | Add... | Recent posts | Search | Register | Log in


[C++] pierwsza gra, nie rozumiem błędów


Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> [C++] pierwsza gra, nie rozumiem błędów
Author
Message
Szeregowy Maliniak
Poziom 9
Poziom 9


Joined: 10 Jul 2008
Posts: 37
Location: Wiry

Post#1 Post from the author of the topic 15 Mar 2010 16:17   

[C++] pierwsza gra, nie rozumiem błędów


Chce zrobić coś al'a to http://www.youtube.com/watch?v=rJeY-iJZy1w&feature=related . Poruszanie (na WASD szukałem coś na temat strzałek ale mi nie wychodziło) już działa, zrobiłem na razie prostą klase rycerza i teraz Visual pokazuje mi parę błędów których znaczenia nie rozumiem. Oto kody:
rycerz.h
Code:
#include <iostream>
#include <string>
using namespace std;


class rycerz
  {
  private:
    string nick;
    int zloto;
    int hp;
  public:
     rycerz():zloto(400),hp(10) {}
    void setNick(string n)
    {
      nick = n;
    }
    char getNick()
    {
      return nick;
    }
    int getHp()
    {
      return hp;
    }
    void addHp(int x)
    {
      hp+=x;
    }
    int getZloto()
    {
      return zloto;
    }
    void addZloto(int x)
    {
      zloto+=x;
    }
  };


ruszanie.h
Code:
#include <iostream>
#include <windows.h>
#include <time.h>
#include <string>
#include <conio.h>
#include "rycerz.h"
using namespace std;
void plansza();
void ruszanie(int & x,int & y, rycerz soldier);
void gotoxy(int  x, int  y)
{
    COORD cord;
    cord.X = x;
    cord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cord);
}

void ruszanie(int & x,int & y , rycerz soldier)
{
   
   cout<<soldier.getNick()<<"\thp="<<soldier.getHp()<<"\tzloto="<<soldier.getZloto()<<endl;
   cout<<endl;
   cout<<"----------------------------------------------------------------\n";
   cout<<endl;
   int tempx=x,tempy=y;
   char q,b=4;
   q = getch();
   cout<<"\b ";
   gotoxy(0,0);
   plansza();
   if(q=='w')
   {
      y-=1;
      gotoxy(x,y);
      cout<<b;
   }
   if(q=='a')
   {
      x-=1;
      gotoxy(x,y);
      cout<<b;
   }
   if(q=='s')
   {
      y+=1;
      gotoxy(x,y);
      cout<<b;
   }
   if(q=='d')
   {
      x+=1;
      gotoxy(x,y);
      cout<<b;
   }
   
   if (q!='w'&& q!='a'&& q!='s'&& q!='d')
   {
      cout<<"\a";
   }
   if(x<=0||y<=0||x>27||y>12)
   {
      cout<<"\a";
      x=tempx;
      y=tempy;
      cout<<"\b ";
      gotoxy(x,y);
      cout<<b;
   }
   
}
void plansza()
{
   cout<<"|--------------------------|\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|                          |\n";
   cout<<"|--------------------------|\n";

}


Gra //główny plik
Code:
#include <iostream>
#include <string>
#include <conio.h>
#include "ruszanie.h"
#include "rycerz.h"
void c() {system("cls");}; //czyszczenie ekranu
using namespace std;
int main()
{
   rycerz soldier;
   int x=7,y=7;
   string n;
   cout<<"Podaj swoj nick:\n";
   cin.getline(n,30);
   soldier.setNick(n);
   c();
   
   for(int q = 0;q<100;q++)
      ruszanie(x,y,soldier);
   
   
getchar();
getchar();
return 0;
}



A oto błędy
[C++] pierwsza gra, nie rozumiem błędów
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#2 15 Mar 2010 17:32helpful post - solution   

Re: [C++] pierwsza gra, nie rozumiem błędów


1. nick masz w stringu, a próbujesz funkcją zwracac znak - niekompatybilne typy.

Część błędów prawdopodobnie będzie zależna od możliwości skompilowania klasy.
Back to top
   
Szeregowy Maliniak
Poziom 9
Poziom 9


Joined: 10 Jul 2008
Posts: 37
Location: Wiry

Post#3 Post from the author of the topic 15 Mar 2010 17:45   

Re: [C++] pierwsza gra, nie rozumiem błędów


Jak zmieniłem return na cout<< (w ruszaniu też) to mi teraz wywala błędy z getch()
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#4 15 Mar 2010 18:25   

Re: [C++] pierwsza gra, nie rozumiem błędów


A jakie?

Tak w ogóle to nie musisz od razu zmieniać na wypisywanie - wystarczy tylko zmienić typ zwracanej wartości przez funkcję.
Back to top
   
Google

Google Adsense


Post# 15 Mar 2010 18:25   





Back to top
   
Szeregowy Maliniak
Poziom 9
Poziom 9


Joined: 10 Jul 2008
Posts: 37
Location: Wiry

Post#5 Post from the author of the topic 15 Mar 2010 20:08   

Re: [C++] pierwsza gra, nie rozumiem błędów


[C++] pierwsza gra, nie rozumiem błędów
Jak zmienić typ zwracanej zmiennej na tablice??
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#6 15 Mar 2010 20:43helpful post - solution   

Re: [C++] pierwsza gra, nie rozumiem błędów


Co do redefinicji - z obu plików nagłówkowych masz wskazanie do pliku zawierającego klasę "rycerz". Domyślam się, że tu będzie tkwił problem.

Co do tablic - zwraca się wskaźnik na tablicę. Ale jeśli tablica jest tworzona w instancji funkcji - trzeba operować parametrami preferencyjnie przekazanymi.
Back to top
   
Google

Google Adsense


Post# 15 Mar 2010 20:43helpful post - solution   





Back to top
   
Szeregowy Maliniak
Poziom 9
Poziom 9


Joined: 10 Jul 2008
Posts: 37
Location: Wiry

Post#7 Post from the author of the topic 18 Mar 2010 18:31   

Re: [C++] pierwsza gra, nie rozumiem błędów


Proszę, powiedzcie mi co mam źle. Najbardziej zastanawia mnie ten błąd
Code:
error C2011: 'rycerz' : 'class' type redefinition

Myślę, że tak jak mówi Dżyszla jeżeli klasa będzie dobrze zrobiona, to reszta powinna działać.
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#8 18 Mar 2010 19:06helpful post - solution   

Re: [C++] pierwsza gra, nie rozumiem błędów


Jak wspominałem - chodzi tu zapewne o includowanie w pliku includowanym. Wrzuć wszystko do jednego pliku, a pewnie tego błędu się pozbędziesz.
Back to top
   
Szeregowy Maliniak
Poziom 9
Poziom 9


Joined: 10 Jul 2008
Posts: 37
Location: Wiry

Post#9 Post from the author of the topic 19 Mar 2010 16:12   

Re: [C++] pierwsza gra, nie rozumiem błędów


Teraz działa, tylko teraz program wygląda mniej przejrzyście. Jak zrobić by działo to w osobnych plikach ?
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#10 19 Mar 2010 16:37   

Re: [C++] pierwsza gra, nie rozumiem błędów


Musisz tak dzielić, aby nie dokonywać podwójnego includowania.
Back to top
   
Dr.Vee
Poziom 22
Poziom 22


Joined: 16 May 2008
Posts: 1808
Location: Wrocław

Post#11 19 Mar 2010 23:10helpful post - solution   

Re: [C++] pierwsza gra, nie rozumiem błędów


Jest to problem stary jak świat, rozwiązanie z użyciem preprocesora.

plik klasa.hpp:
Code:
#ifndef KLASA_HPP
#define KLASA_HPP

// kod pliku

#endif // ifndef KLASA_HPP

Jeśli tak "zawiniesz" każdy plik z deklaracjami klas, to nie będziesz miał problemów z redefinicjami.

Pozdrawiam,
Dr.Vee
Back to top
   
Google

Google Adsense


Post# 19 Mar 2010 23:10helpful post - solution   





Back to top
   
Szeregowy Maliniak
Poziom 9
Poziom 9


Joined: 10 Jul 2008
Posts: 37
Location: Wiry

Post#12 Post from the author of the topic 20 Mar 2010 13:41   

Re: [C++] pierwsza gra, nie rozumiem błędów


Następne pytanie:
Dodałem sklep do planszy :D , kod wygląda tak
Code:
void sklep(int x,int  y, rycerz & soldier)
{
   int a=0;
   gotoxy(7,5);
   cout<<"S";
   if(x==7&&y==5)

   {
      system("cls");
      cout<<"Witaj, "<<soldier.getNick()<<". Moze zainteresuje Cie jeden z moich towarow?\n";
      cout<<"1. Health Potion  40 zlota\n";
      cin>>a;
      switch (a)
      {
         case 1:
            cout<<"Dzieki, milo sie z Toba robi interesy\n";
            soldier.addHp(10);
            soldier.addZloto(-40);
            break;
         default:
            cout<<"Nie mam takiego towaru\n";
            break;
      }
      _sleep(2000);
      system("cls");
      getch();
   }   
}


Wszystko prawie działa, tylko jest problem gdy wybiore coś czego nie ma w sklepie. Pokazuje mi ładnie że nie ma takiego towaru, tylko że jak chcę znowu wejść do sklepu to od razu pokazuje mi, że nie ma takiego towaru i nie mogę sobie nic kupić. Jak to naprawić?
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#13 20 Mar 2010 15:09   

Re: [C++] pierwsza gra, nie rozumiem błędów


Upewnij się, czy nie zostaje Ci w buforze jakiś znak... Choć generalnie trochę to dziwi...
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> [C++] pierwsza gra, nie rozumiem błędów
Page 1 of 1
Similar topics
[Bascom]Nie rozumiem attiny13 i SRAM (1)
Mam kawałek kodu i go nie rozumiem (1)
Nie rozumiem tego - AVR C (10)
Nic nie rozumiem....EasyTrax (5)
nie rozumiem po co są wskazniki (4)
Pętla nie skończona kończy sie - hmmm nie rozumiem ?? (10)
Moja pierwsza gra. Chciałbym, żeby ktoś ocenił. (5)
Podstawy w C nie rozumiem kodu z ksiazki :-( (6)
OPT101. Światło na napięcie. Czegoś tu nie rozumiem. (8)
Pascal - nie rozumiem komunikatu, źle działa mysz (4)

Page generation time: 0.122 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed