Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
Autor | Správa |
---|
Registrovaný: 07.01.14 Prihlásený: 29.12.22 Príspevky: 41 Témy: 10 | 10 |
Pekný slnečný deň prajem. Robím malú konzolovú hru na princíp spoločenskej hry Room-25, resp. sa učím OOP v C++. Dávam dôraz na to slovo učím, tak ma nepucujte prosím za to, ako vyzerá kód. Hra: Máme mapu o veľkosti 5x5 miestností a hráč začína v strede. Hráč má 50 ťahov na to, aby sa dostal von z areálu, teda do jednej z okrajových miestností. Každé dva ťahy sa miestnosti náhodne menia. Okrem cieľovej a začiatočnej. V hre sú miestnosti, ktoré vás okamžite zabijú, prázdne miestnosti, či miestnosti, ktoré vás zabijú až v ďalšom ťahu, ak z nej neodídete. Hráč môže spraviť v danom kole jednu z nasledujúcich možnosti: pozrieť sa do jednej z vedľajších miestností, presunúť sa do jednej z vedľajších miestností alebo ostať v miestnosti, v ktorej sa nachádza. A problém - V triede map mám generátor mapy, ktorý má naplniť pole array_map[6][6] náhodnými číslami od 0 - 4. Každé číslo predstavuje nejaký typ miestnosti. No a toto pole má mať každé dva ťahy vygenerované iné hodnoty. Keď si nechám pole vypísať, tak všetko ide v poriadku. Ale ak sa chcem pozrieť do vedľajšej miestnosti alebo sa do nej presunúť, tak celú dobu hry sa v poli nachádzajú tie isté hodnoty, ktoré sa vygenerovali na začiatku hry. A ja už fakt neviem, čo mám zle. Moc by som bol vďačný, keby mi niekto poradil. main.cpp Kód: #include <iostream> #include <stdlib.h> #include <cstdio> #include <conio.h> #include "map.h" #include "player_position.h"
void clrscr() { system("cls"); }
using namespace std; int turn = 1;
int main() {
int _game; int b; int timer = 1;
while(1) { map _map; player_position _player; /**/ _player.player_map_f(); _player.show_player_position(); while (turn != 51) { _game = _player.c_game(); cout << "Game:" << _game << endl; if (_game == 1 || _game == 3 || _game == 4) { //stav hry if (_game != 3) { //ak nie sme v miestnosti s vychodom if (_game == 4) {//kontrola, ci sme v miestnosti s kyselinou timer++; } else { timer = 1; } cout << "Timer: " << timer << endl; if (timer < 2) { //dve kola v kyselinovej miestnosti if (turn % 2 == 0) { _map.shuffle_rooms(); } int btn = getch(); clrscr(); /** POHYB **/ if (btn == 'w') { _player.go_up(); _player.show_player_position(); //_map.show_map(); cout << endl << endl; turn++; } if (btn == 's') { _player.go_down(); _player.show_player_position(); cout << endl << endl; turn++; } if (btn == 'a') { _player.go_left(); _player.show_player_position(); cout << endl << endl; turn++; } if (btn == 'd') { _player.go_right(); _player.show_player_position(); cout << endl << endl; turn++; }
/** NAZERANIE DO MIESTNOSTÍ **/ if (btn == 'i') { _player.show_text(1); _player.show_player_position(); cout << endl << endl; turn++; } if (btn == 'k') { _player.show_text(2); _player.show_player_position(); cout << endl << endl; turn++; } if (btn == 'j') { _player.show_text(3); _player.show_player_position(); cout << endl << endl; turn++; } if (btn == 'l') { _player.show_text(4); _player.show_player_position(); cout << endl << endl; turn++; } else { _player.show_player_position(); cout << endl << endl; turn++; }
cout << "Turn: " << turn << "/50" << endl; } else { cout << "Preco si neodisiel? Kyselina ta celeho rozleptala a na nasledky zranenii si umrel." << endl; break; } } else { cout << "Vsade same svetlo a v miestnosti len jedny dvere. Zo zaujimavosti si ich hned otvoril." << endl << "-Slava! Konecne sa mi to podarilo! Som vonku!-" << endl; break; } } else { cout << "Bol si usmrteny!" << endl; break; } if (turn == 51) { clrscr(); cout << "-Co sa to deje?!-" << endl << "Pocujes otrasy vsade okolo seba. Dvere na vsetkych miestnostiach sa pomaly otvaraju a vidis v nich cervene svetlo." << endl << "-No do...-" << endl << "Vsetko spalene, neostal ani popol." << endl; } }
cout << "Spustit novu hru? (Stlac Y pre novu hru a pre ukoncenie programu stlac inu lubovolnu klavesu.)" << endl; b = getch(); if (b == 'y') { clrscr(); turn = 1; timer = 1; _player.~player_position(); _map.~map();
continue; } else { break; } } }
map.cpp Kód: #include <iostream> #include <cstdlib> #include <stdio.h> #include "map.h"
using namespace std;
map::map() { if (first_turn == 1) { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == 2 && j == 2) { array_map[i][j] = 99; } else if (i == 0 && j == 4) { array_map[i][j] = 50; } else { array_map[i][j] = random_room(); } } } } first_turn == 0; }
map::~map() { cout << "Objekt map zniceny." << endl; }
int map::random_room() { return room_type = rand() % 5; }
void map::shuffle_rooms() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == 2 && j == 2) { array_map[i][j] = 99; } else if (i == 0 && j == 4) { array_map[i][j] = 50; } else { array_map[i][j] = random_room(); } } } }
int map::show_map() { for (int i = 0; i < 5; i++) { printf("\n"); for (int j = 0; j < 5; j++) { printf("%d ", array_map[i][j]); } } return 0; }
map.h Kód: #include <iostream> #ifndef MAP_H #define MAP_H
using namespace std;
class map { private: int first_turn = 1;
public: int room_type; int array_map[6][6];
map(); virtual ~map();
int random_room(); int show_map(); void shuffle_rooms();
protected: };
#endif // MAP_H
player_position.cpp Kód: #include <iostream> #include <cstdlib> #include <stdio.h> #include "player_position.h"
using namespace std;
player_position::player_position() { position_x = 2; position_y = 2; game = 1; }
player_position::~player_position() { position_x = 2; position_y = 2; game = 1; cout << "Objekt player zniceny." << endl; }
int player_position::c_game(){ return game; }
void player_position::show_text() { if (array_map[position_x][position_y] == 0) { game = 0; cout << "Vkrocil si do ohnivej miestnosti a bol si spaleny na uhol!" << endl; } if (array_map[position_x][position_y] == 1) { game = 4; cout << "Vosiel si do dalsej miestnosti, no citis neprijemny pocit na kozi. Po chvilke zistis, ze na teba pada jemny kyselinotvorny prasok. Musis urychlene opustit tuto miestnost, inak v dalsom kole umires!" << endl; } if (array_map[position_x][position_y] == 2) { game = 1; cout << "Krasny je to pocit byt v tomto sialenom arealy v miestnosti, kde sa nic nedeje." << endl; } if (array_map[position_x][position_y] == 3) { game = 0; cout << "Ty blazon, preco si vkrocil do miestnosti plnej vody, ked nevies plavat?" << endl; } if (array_map[position_x][position_y] == 4) { game = 0; cout << "Elektricke vyboje nikdy nie su prijemne. A takto silne uz vonkoncom nie. Bohuzial si dostal zasah silnym elektrickym vybojom a okamzize si umrel." << endl; } if (array_map[position_x][position_y] == 50) { game = 3; cout << "Cesta von?" << endl; } if (array_map[position_x][position_y] == 99) { game = 1; cout << "Zase som v strede! Tato cesta bude nekonecna..." << endl; } }
void player_position::show_text(int text_type) { //ukážka polymorfizmu if (text_type == 1) { //UP if (look_up() == 0) { cout << "Fuu, to je horko. (Vsade len ohen.) Vojst do tejto miestnosti by bola okamzita smrt." << endl; } if (look_up() == 1) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_up() == 2) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_up() == 3) { cout << "Voda, vsade voda! Preco som sa len nenaucil plavat." << endl; } if (look_up() == 4) { cout << "Bzzzzz, pozor! Elektrika. Takto silny vyboj by zabil aj slona!" << endl; } if (look_up() == 50) { cout << "Co to je? Prazdna miestnost, silne svetlo, jedny dvere. Dufam, ze to je cesta von!" << endl; } if (look_up() == 99) { cout << "Jee, spominam si. V tejto miestnosti som sa prebudil!" << endl; } } if (text_type == 2) { //DOWN if (look_down() == 0) { cout << "Hori ohnik hori... Sem zarucene vojst nechcem." << endl; } if (look_down() == 1) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_down() == 2) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_down() == 3) { cout << "Zblnk. Neviem plavat a tato miestnost je tak plna vody..." << endl; } if (look_down() == 4) { cout << "Otvoril si dvere do dalsej miestnosti a vsade okolo slahaju blesky a v rychlosti ich zavries zase spat. Uff, to bola tesnotka. Vojst dnu je smrt!" << endl; } if (look_down() == 50) { cout << "Otvoril si dvere, opatrne si nazrel a vo vnutri si zbadal jedny dvere s napisom EXIT! Cesta von!" << endl; } if (look_down() == 99) { cout << "Moje rozbite hodinky. Tie som nechal v miestnosti, kde som sa prebudil." << endl; } } if (text_type == 3) { //LEFT if (look_left() == 0) { cout << "Fuu, to je horko. (Vsade len ohen.) Vojst do tejto miestnosti by bola okamzita smrt." << endl; } if (look_left() == 1) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_left() == 2) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_left() == 3) { cout << "Voda, vsade voda! Preco som sa len nenaucil plavat." << endl; } if (look_left() == 4) { cout << "Bzzzzz, pozor! Elektrika. Takto silny vyboj by zabil aj slona!" << endl; } if (look_left() == 50) { cout << "Co to je? Prazdna miestnost, silne svetlo, jedny dvere. Dufam, ze to je cesta von!" << endl; } if (look_left() == 99) { cout << "Jee, spominam si. V tejto miestnosti som sa prebudil!" << endl; } } if (text_type == 4) { //RIGHT if (look_down() == 0) { cout << "Hori ohnik hori... Sem zarucene vojst nechcem." << endl; } if (look_down() == 1) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_down() == 2) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_down() == 3) { cout << "Zblnk. Neviem plavat a tato miestnost je tak plna vody..." << endl; } if (look_down() == 4) { cout << "Otvoril si dvere do dalsej miestnosti a vsade okolo slahaju blesky a v rychlosti ich zavries zase spat. Uff, to bola tesnotka. Vojst dnu je smrt!" << endl; } if (look_down() == 50) { cout << "Otvoril si dvere, opatrne si nazrel a vo vnutri si zbadal jedny dvere s napisom EXIT! Cesta von!" << endl; } if (look_down() == 99) { cout << "Moje rozbite hodinky. Tie som nechal v miestnosti, kde som sa prebudil." << endl; } } }
void player_position::go_up() { if (position_x >= 0 && position_x <= 5) { p_p_x = position_x; p_p_y = position_y; position_x = position_x - 1; set_player_position(p_p_x, p_p_y); cout << "POSITION x: " << position_x << endl << "POSITION y: " << position_y << endl; show_text(); } else { cout << "Davaj si vacsi pozor! Skoro si padol do prazdna!" << endl; } }
void player_position::go_down() { if (position_x >= 0 && position_x <= 5) { p_p_x = position_x; p_p_y = position_y; position_x = position_x + 1; set_player_position(p_p_x, p_p_y); cout << "POSITION x: " << position_x << endl << "POSITION y: " << position_y << endl; show_text(); } else { cout << "Davaj si vacsi pozor! Skoro si padol do prazdna!" << endl; } }
void player_position::go_left() { if (position_y >= 0 && position_y <= 5) { p_p_x = position_x; p_p_y = position_y; position_y = position_y - 1; set_player_position(p_p_x, p_p_y); cout << "POSITION x: " << position_x << endl << "POSITION y: " << position_y << endl; show_text(); } else { cout << "Davaj si vacsi pozor! Skoro si padol do prazdna!" << endl; } }
void player_position::go_right() { if (position_y >= 0 && position_y <= 5) { p_p_x = position_x; p_p_y = position_y; position_y = position_y + 1; set_player_position(p_p_x, p_p_y); cout << "POSITION x: " << position_x << endl << "POSITION y: " << position_y << endl; show_text(); } else { cout << "Davaj si vacsi pozor! Skoro si padol do prazdna!" << endl; } }
int player_position::look_up() { return array_map[position_x-1][position_y]; }
int player_position::look_down() { return array_map[position_x+1][position_y]; }
int player_position::look_left() { return array_map[position_x][position_y-1]; }
int player_position::look_right() { return array_map[position_x][position_y+1]; }
void player_position::player_map_f() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { player_map[i][j] = '#'; } } player_map[2][2] = 'X'; }
void player_position::set_player_position(int previous_p_x, int previous_p_y) { player_map[position_x][position_y] = 'X'; player_map[previous_p_x][previous_p_y] = '#'; }
void player_position::show_player_position() { for (int i = 0; i < 5; i++) { printf("\n"); for (int j = 0; j < 5; j++) { printf("%c ", player_map[i][j]); } } }
player_position.h Kód: #include <iostream> #ifndef PLAYER_POSITION_H #define PLAYER_POSITION_H #include "map.h"
using namespace std;
class player_position : public map { private: int game; char player_map[6][6]; int position_x; int position_y; int p_p_x; int p_p_y;
public: player_position(); virtual ~player_position();
int c_game();
void go_up(); void go_down(); void go_left(); void go_right();
int look_up(); int look_down(); int look_left(); int look_right();
void stay();
void set_player_position(int previous_p_x, int previous_p_y); void show_player_position(); void player_map_f();
virtual void show_text(); virtual void show_text(int text_type);
protected: };
#endif // MAP_H
|
|
Registrovaný: 27.06.09 Prihlásený: 04.03.23 Príspevky: 332 Témy: 3 | 3 Bydlisko: Košice - ok... |
shuffle_rooms() ti funguje... tú dážďovku sa mi bars nechce lúštiť // v timer sa ti strieda 1 a 2 Kód: if (timer < 2) { //dve kola v kyselinovej miestnosti if (turn % 2 == 0) { _map.shuffle_rooms(); } shuffle_rooms() volas len vtedy ked je timer 1 a este k tomu aj ked je turn delitelny dvojkou // a cely ten pohyb a nazeranie do miestnosti mas v timer < 2 ... to preco? // uz chapem // turn++; - by som vybral a vlozil za vsetky if, aby sa to v kazdom zbytocne neopakovalo, aj cout << endl << endl;// skus zmenit _map.shuffle_rooms(); na _player.shuffle_rooms();
_________________ GitHub: mfocko | mfocko.xyz OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed) Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission] |
|
Registrovaný: 07.01.14 Prihlásený: 29.12.22 Príspevky: 41 Témy: 10 | 10 |
Ten timer je premenná, do ktorej sa ukladá počet kôl strávených v miestnosti, ktorá ťa zabije až o 2 ťahy, resp. až ťah po tom, čo si sa rozhodol v nej ostať. Turn++ dobrý postreh. No a tá podmienka, čo si napísal. shuffle_rooms() chcem zavolať každé dva ťahy. Kód: if (turn % 2 == 0) { _map.shuffle_rooms(); }
Teda počítam hodnotu v turne ktorú vydelím dvoma a v prípade, ak je zvyšok po delení 0, tak sa majú zamiešať miestnosti. A to funguje. Pri vypísaní samotného pola sa hodnoty každé dva ťahy prehodia. Lenže, keď idem uskutočniť pohyb alebo chcem nazrieť do miestnosti, tak nech je 1. kolo alebo 27. kolo, vždy mi vypíše to isté, teda akoby sa to pole nemenilo pre triedu player_position (inak blbé meno triedy, presnejšie by bolo len player, ale to som si uvedomil až neskôr).
|
|
Registrovaný: 27.06.09 Prihlásený: 04.03.23 Príspevky: 332 Témy: 3 | 3 Bydlisko: Košice - ok... |
lebo sa ani nemeni mas dva objekty, jeden je ten player a druhy je map ty volas shuffle na map, a player si furt taha zo svojho pola
_________________ GitHub: mfocko | mfocko.xyz OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed) Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission] |
|
Registrovaný: 07.01.14 Prihlásený: 29.12.22 Príspevky: 41 Témy: 10 | 10 |
No ok, tak to mi vysvetli prečo. Hej a k tomu poľu pristupujem už cez get_array_map(int x, int y)
|
|
Registrovaný: 27.06.09 Prihlásený: 04.03.23 Príspevky: 332 Témy: 3 | 3 Bydlisko: Košice - ok... |
teraz som to dopisal player je potomok map, ale oni nezdielaju rovnake pole... ked volas ten look_hore, dole, sikmo... on to porovnava s polom, ktore ma ulozene v player... ty menis to co je v map... to su dve rozdielne polia... PLAYER SI IDE AJ TAK SVOJE a na to v map ti kasle // Spojený príspevok Ned 22.05.16 23:37Kód: if (timer < 2) { //dve kola v kyselinovej miestnosti if (turn % 2 == 0) { _player.shuffle_rooms(); } ten objekt typu _map aj so vsetkym co ho pouzivalo odmaz, je zbytocny
_________________ GitHub: mfocko | mfocko.xyz OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed) Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission] |
|
Registrovaný: 07.01.14 Prihlásený: 29.12.22 Príspevky: 41 Témy: 10 | 10 |
Teraz to vyzerá takto. Mal som aj takého tušáka, že si vytvára vlastné pole. Lenže keď som prirobil getter, tak to hnedé pomohlo. Robí to presne to isté. main.cpp Kód: #include <iostream> #include <stdlib.h> #include <cstdio> #include <conio.h> #include "map.h" #include "player_position.h"
void clrscr() { system("cls"); }
using namespace std; int turn = 1;
int main() {
int _game; int b; int timer = 1;
while(1) { map _map; player_position _player; /**/ _player.player_map_f(); _player.show_player_position(); while (turn != 51) { _game = _player.c_game(); cout << "Game:" << _game << endl; if (_game == 1 || _game == 3 || _game == 4) { //stav hry if (_game != 3) { //ak nie sme v miestnosti s vychodom if (_game == 4) {//kontrola, ci sme v miestnosti s kyselinou timer++; } else { timer = 1; } cout << "Timer: " << timer << endl; if (timer < 2) { //dve kola v kyselinovej miestnosti if (turn % 2 == 0) { _map.shuffle_rooms(); } int btn = getch(); clrscr(); /** POHYB **/ if (btn == 'w') { _player.go_up(); _player.show_player_position(); //_map.show_map(); cout << endl << endl; turn++; } else if (btn == 's') { _player.go_down(); _player.show_player_position(); cout << endl << endl; turn++; } else if (btn == 'a') { _player.go_left(); _player.show_player_position(); cout << endl << endl; turn++; } else if (btn == 'd') { _player.go_right(); _player.show_player_position(); cout << endl << endl; turn++; } else if (btn == 'i') { /** NAZERANIE DO MIESTNOSTÍ **/ _player.show_text(1); _player.show_player_position(); cout << endl << endl; turn++; } else if (btn == 'k') { _player.show_text(2); _player.show_player_position(); cout << endl << endl; turn++; } else if (btn == 'j') { _player.show_text(3); _player.show_player_position(); cout << endl << endl; turn++; } else if (btn == 'l') { _player.show_text(4); _player.show_player_position(); cout << endl << endl; turn++; } else { _player.show_player_position(); cout << endl << endl; turn++; }
cout << "Turn: " << turn << "/50" << endl; } else { cout << "Preco si neodisiel? Kyselina ta celeho rozleptala a na nasledky zranenii si umrel." << endl; break; } } else { cout << "Vsade same svetlo a v miestnosti len jedny dvere. Zo zaujimavosti si ich hned otvoril." << endl << "-Slava! Konecne sa mi to podarilo! Som vonku!-" << endl; break; } } else { cout << "Bol si usmrteny!" << endl; break; } if (turn == 51) { clrscr(); cout << "-Co sa to deje?!-" << endl << "Pocujes otrasy vsade okolo seba. Dvere na vsetkych miestnostiach sa pomaly otvaraju a vidis v nich cervene svetlo." << endl << "-No do...-" << endl << "Vsetko spalene, neostal ani popol." << endl; } }
cout << "Spustit novu hru? (Stlac Y pre novu hru a pre ukoncenie programu stlac inu lubovolnu klavesu.)" << endl; b = getch(); if (b == 'y') { clrscr(); turn = 1; timer = 1; _player.~player_position(); _map.~map();
continue; } else { break; } } }
map.cpp Kód: #include <iostream> #include <cstdlib> #include <stdio.h> #include "map.h"
using namespace std;
map::map() { if (first_turn == 1) { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == 2 && j == 2) { array_map[i][j] = 99; } else if (i == 0 && j == 4) { array_map[i][j] = 50; } else { array_map[i][j] = random_room(); } } } } first_turn == 0; }
map::~map() { cout << "Objekt map zniceny." << endl; }
int map::random_room() { return room_type = rand() % 5; }
void map::shuffle_rooms() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == 2 && j == 2) { array_map[i][j] = 99; } else if (i == 0 && j == 4) { array_map[i][j] = 50; } else { array_map[i][j] = random_room(); } } } }
int map::show_map() { for (int i = 0; i < 5; i++) { printf("\n"); for (int j = 0; j < 5; j++) { printf("%d ", array_map[i][j]); } } return 0; }
int map::get_array_map(int x, int y) { return array_map[x][y]; }
player_position.cpp Kód: #include <iostream> #include <cstdlib> #include <stdio.h> #include "player_position.h"
using namespace std;
player_position::player_position() { position_x = 2; position_y = 2; game = 1; }
player_position::~player_position() { position_x = 2; position_y = 2; game = 1; cout << "Objekt player zniceny." << endl; }
int player_position::c_game(){ return game; }
void player_position::show_text() { if (get_array_map(position_x, position_y) == 0) { game = 0; cout << "Vkrocil si do ohnivej miestnosti a bol si spaleny na uhol!" << endl; } if (get_array_map(position_x, position_y) == 1) { game = 4; cout << "Vosiel si do dalsej miestnosti, no citis neprijemny pocit na kozi. Po chvilke zistis, ze na teba pada jemny kyselinotvorny prasok. Musis urychlene opustit tuto miestnost, inak v dalsom kole umires!" << endl; } if (get_array_map(position_x, position_y) == 2) { game = 1; cout << "Krasny je to pocit byt v tomto sialenom arealy v miestnosti, kde sa nic nedeje." << endl; } if (get_array_map(position_x, position_y) == 3) { game = 0; cout << "Ty blazon, preco si vkrocil do miestnosti plnej vody, ked nevies plavat?" << endl; } if (get_array_map(position_x, position_y) == 4) { game = 0; cout << "Elektricke vyboje nikdy nie su prijemne. A takto silne uz vonkoncom nie. Bohuzial si dostal zasah silnym elektrickym vybojom a okamzize si umrel." << endl; } if (get_array_map(position_x, position_y) == 50) { game = 3; cout << "Cesta von?" << endl; } if (get_array_map(position_x, position_y) == 99) { game = 1; cout << "Zase som v strede! Tato cesta bude nekonecna..." << endl; } }
void player_position::show_text(int text_type) { //ukážka polymorfizmu if (text_type == 1) { //UP if (look_up() == 0) { cout << "Fuu, to je horko. (Vsade len ohen.) Vojst do tejto miestnosti by bola okamzita smrt." << endl; } if (look_up() == 1) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_up() == 2) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_up() == 3) { cout << "Voda, vsade voda! Preco som sa len nenaucil plavat." << endl; } if (look_up() == 4) { cout << "Bzzzzz, pozor! Elektrika. Takto silny vyboj by zabil aj slona!" << endl; } if (look_up() == 50) { cout << "Co to je? Prazdna miestnost, silne svetlo, jedny dvere. Dufam, ze to je cesta von!" << endl; } if (look_up() == 99) { cout << "Jee, spominam si. V tejto miestnosti som sa prebudil!" << endl; } } if (text_type == 2) { //DOWN if (look_down() == 0) { cout << "Hori ohnik hori... Sem zarucene vojst nechcem." << endl; } if (look_down() == 1) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_down() == 2) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_down() == 3) { cout << "Zblnk. Neviem plavat a tato miestnost je tak plna vody..." << endl; } if (look_down() == 4) { cout << "Otvoril si dvere do dalsej miestnosti a vsade okolo slahaju blesky a v rychlosti ich zavries zase spat. Uff, to bola tesnotka. Vojst dnu je smrt!" << endl; } if (look_down() == 50) { cout << "Otvoril si dvere, opatrne si nazrel a vo vnutri si zbadal jedny dvere s napisom EXIT! Cesta von!" << endl; } if (look_down() == 99) { cout << "Moje rozbite hodinky. Tie som nechal v miestnosti, kde som sa prebudil." << endl; } } if (text_type == 3) { //LEFT if (look_left() == 0) { cout << "Fuu, to je horko. (Vsade len ohen.) Vojst do tejto miestnosti by bola okamzita smrt." << endl; } if (look_left() == 1) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_left() == 2) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_left() == 3) { cout << "Voda, vsade voda! Preco som sa len nenaucil plavat." << endl; } if (look_left() == 4) { cout << "Bzzzzz, pozor! Elektrika. Takto silny vyboj by zabil aj slona!" << endl; } if (look_left() == 50) { cout << "Co to je? Prazdna miestnost, silne svetlo, jedny dvere. Dufam, ze to je cesta von!" << endl; } if (look_left() == 99) { cout << "Jee, spominam si. V tejto miestnosti som sa prebudil!" << endl; } } if (text_type == 4) { //RIGHT if (look_down() == 0) { cout << "Hori ohnik hori... Sem zarucene vojst nechcem." << endl; } if (look_down() == 1) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_down() == 2) { cout << "Hmm, je toto prazdna miestnost?" << endl; } if (look_down() == 3) { cout << "Zblnk. Neviem plavat a tato miestnost je tak plna vody..." << endl; } if (look_down() == 4) { cout << "Otvoril si dvere do dalsej miestnosti a vsade okolo slahaju blesky a v rychlosti ich zavries zase spat. Uff, to bola tesnotka. Vojst dnu je smrt!" << endl; } if (look_down() == 50) { cout << "Otvoril si dvere, opatrne si nazrel a vo vnutri si zbadal jedny dvere s napisom EXIT! Cesta von!" << endl; } if (look_down() == 99) { cout << "Moje rozbite hodinky. Tie som nechal v miestnosti, kde som sa prebudil." << endl; } } }
void player_position::go_up() { if (position_x >= 0 && position_x <= 5) { p_p_x = position_x; p_p_y = position_y; position_x = position_x - 1; set_player_position(p_p_x, p_p_y); cout << "POSITION x: " << position_x << endl << "POSITION y: " << position_y << endl; show_text(); } else { cout << "Davaj si vacsi pozor! Skoro si padol do prazdna!" << endl; } }
void player_position::go_down() { if (position_x >= 0 && position_x <= 5) { p_p_x = position_x; p_p_y = position_y; position_x = position_x + 1; set_player_position(p_p_x, p_p_y); cout << "POSITION x: " << position_x << endl << "POSITION y: " << position_y << endl; show_text(); } else { cout << "Davaj si vacsi pozor! Skoro si padol do prazdna!" << endl; } }
void player_position::go_left() { if (position_y >= 0 && position_y <= 5) { p_p_x = position_x; p_p_y = position_y; position_y = position_y - 1; set_player_position(p_p_x, p_p_y); cout << "POSITION x: " << position_x << endl << "POSITION y: " << position_y << endl; show_text(); } else { cout << "Davaj si vacsi pozor! Skoro si padol do prazdna!" << endl; } }
void player_position::go_right() { if (position_y >= 0 && position_y <= 5) { p_p_x = position_x; p_p_y = position_y; position_y = position_y + 1; set_player_position(p_p_x, p_p_y); cout << "POSITION x: " << position_x << endl << "POSITION y: " << position_y << endl; show_text(); } else { cout << "Davaj si vacsi pozor! Skoro si padol do prazdna!" << endl; } }
int player_position::look_up() { return get_array_map(position_x-1, position_y); }
int player_position::look_down() { return get_array_map(position_x+1, position_y); }
int player_position::look_left() { return get_array_map(position_x, position_y-1); }
int player_position::look_right() { return get_array_map(position_x, position_y+1); }
void player_position::player_map_f() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { player_map[i][j] = '#'; } } player_map[2][2] = 'X'; }
void player_position::set_player_position(int previous_p_x, int previous_p_y) { player_map[position_x][position_y] = 'X'; player_map[previous_p_x][previous_p_y] = '#'; }
void player_position::show_player_position() { for (int i = 0; i < 5; i++) { printf("\n"); for (int j = 0; j < 5; j++) { printf("%c ", player_map[i][j]); } } }
|
|
Registrovaný: 27.06.09 Prihlásený: 04.03.23 Príspevky: 332 Témy: 3 | 3 Bydlisko: Košice - ok... |
preco tam mas stale map?
_________________ GitHub: mfocko | mfocko.xyz OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed) Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission] |
|
Registrovaný: 07.01.14 Prihlásený: 29.12.22 Príspevky: 41 Témy: 10 | 10 |
To som si neskoro pozrel, pardon. Už som to upravil. A ďakujem už to ide! Už len miestnosť, ktorá ma má zabiť neskôr ma zabije hneď. Idem hľadať chybu. Keby niečo, ozvem sa. Si božský človek!
|
|
Registrovaný: 27.06.09 Prihlásený: 04.03.23 Príspevky: 332 Témy: 3 | 3 Bydlisko: Košice - ok... |
inak neviem ako na windowse, ale mne na linuxe pri getchar() berie aj koniec riadku '\n' ako znak... nemáš s tým problém? treba buffer vyčistiť: Kód: while (getchar() != '\n'); // Kód: if (timer < 3) {} na dve kola v kyselinovej miestnosti
_________________ GitHub: mfocko | mfocko.xyz OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed) Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission] |
|
Registrovaný: 07.01.14 Prihlásený: 29.12.22 Príspevky: 41 Témy: 10 | 10 |
Noo getchar() čaká na potvrdenie, ale getch() čaká len na znak. Nemám s tým problém veru. Funkciu máš definovanú v <conio.h>.
|
|
Registrovaný: 27.06.09 Prihlásený: 04.03.23 Príspevky: 332 Témy: 3 | 3 Bydlisko: Košice - ok... |
na linuxe asi nie
_________________ GitHub: mfocko | mfocko.xyz OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed) Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission] |
|
Registrovaný: 07.01.14 Prihlásený: 29.12.22 Príspevky: 41 Témy: 10 | 10 | |
Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
|