W tym przypadku nie chcę używać funkcji bo to jest fragment którego zmieniać na pewno nie będę, a funkcje czasami mi już wychodzą strasznie pogmatwane :(
przykład:
s[p[ world.getQueue() ].getPosition() ].rentStreet(p[ world.getQueue() ], p[ s[ p[ world.getQueue() ].getPosition() ].owner]);
i oczywiście jakoś to sobie skracam tymczasowymi zmiennymi, ale i tak końcowa forma jest ciężka do ogarnięcia:
s[pos].rentStreet(p[qu], p[ s[pos].owner]);
Stąd jakieś takie obrzydzenie do funkcji się pojawiło.
A mogę wyrzucić z maina fragment gdzie ładuje dane bezpośrednio na zmienne? ( w taki sposób żebym w głównej części programu mógł bezpośrednio odwoływać się do s[40]
#import <iostream>
#import <ctime>
#import <cstdlib>
#import <fstream>
#import <sstream>
/*
================================by UnicoRush====================================
TO DO LIST:
wpadanie na ulice - czesciowo porobione
kupowanie ulic - porobione
kupowanie domków:
check czy aleja nalezy do gracza
check czy domki nie różnią się wielkościami
jail
karty kasa społeczna i szansa
niestandardowe ulice - dworce, wodociagi i elektrownia, podatek dochodowy
petla gry - czesciowo porobione
3 duble - jail
zastawianie ulic
*/
using namespace std;
#include "dice.h"
#include "dice.cpp"
#include "game.h"
#include "street.h"
#include "player.h"
#include "player.cpp"
#include "street.cpp"
int main() {
//setting up some basics
srand(time(NULL));
int players;
dice d1, d2;
char error_1;
game world;
int qu, pos, paid;
setting_players:
//choosing number of players
cout << "Select number of players:\n> ";
cin >> players;
if (players > 6) {
cout << "Number of player is not recommended. Do you want to continue? [Y/N]\n";
cin >> error_1;
if (error_1 == 89) { cout << "\n\nGoing back... \n\n"; }
else { cout << "\n\n"; goto setting_players; }
}
if (players < 1) { goto setting_players; }
player p[13]; // 0 player nieznany, od 1 wchodzą gracze
// setting up basics of players variables
for (int n=1; n <= players; n++) {
p[n].setID(n);
p[n].setMoney(1200);
p[n].setPosition(0);
}
// setting up world
world.setQueue(1);
world.setGenQueue(1);
world.setHouses(32);
world.setHotels(12);
// setting up streets:D - DONE
street s[40];
string parser;
fstream plik;
plik.open( "street3.csv", ios::in );
if ( plik.good() ) //test poprawnosci pliku
{ cout << "\nStreet data opened!"; }
else { cout << "\nOpening street data failure! :("; }
//loop
for (int i = 0; i < 40; i++)
{
s[i].houses = 0;
s[i].state = 0;
//wczytujemy name
getline(plik, s[i].name,';');
cout << "\nName: " << s[i].name ; //to comment
//wczytujemy position
getline(plik, parser, ';');
s[i].strPosition(parser);
cout << "\nPosition: " << s[i].position; //to comment
//wczytujemy typ
getline(plik, parser, ';');
s[i].strType(parser);
cout << "\nType: " << s[i].type; //to comma
//wczytujemy owner
getline(plik, parser, ';');
s[i].strOwner(parser);
cout << "\nOwner: " << s[i].owner; //to comma
//wczytujemy price
getline(plik, parser, ';');
s[i].strPrice(parser);
cout << "\nPrice: " << s[i].price;
for (int m = 0; m <= 5; m++ )
{
getline(plik, parser, ';');
s[i].strRent( m, parser);
cout << "\nRent level: " << m <<" Price size: " << s[i].rent[m];
}
}
//Hello world here serious programming is going
// nie edytuj players!
cout << "\n\n================================\n";
cout <<"Hello in Monopoly!\n" << "================================\n~by UnicoRush\n\n";
int temp;
bool que_change;
char a;
while (1)
{
cout << "\nTurn: " << world.getGenQueue(); // powinna to byc tabelka ladna i przerobiona na funkcje
cout << "\tTurn of player: " << world.getQueue();
cout << "\tPlayer position: " << p[ world.getQueue() ].getPosition();
cout << "\tPlayer money: " << p [ world.getQueue() ].getMoney(); // to jest start tury
// tu sie kupuje domki
que_change = p[ world.getQueue() ].move(d1, d2, players);
qu = world.getQueue();
s[ p[qu].getPosition() ].card();
pos = p[ qu ].getPosition();
while (1)
{ //not work properly
if ((s[pos].owner != 0) && (s[pos].rent[s[pos].houses] != 0) && s[pos].owner != p[qu].ID) { paid = 0;
while (paid == 0) {
cout << "\n\nYou are obligated to pay: " << s[pos].rent[s[pos].houses] << "\nClick 'r' to rent.\n> "; //w rent zablokowac mozliwosc pieniedzy na -, dodac mortgage sell houses, sell to player w tej petli
cin >> a;
if (a == 'r') { s[pos].rentStreet(p[qu], p[ s[pos].owner]); cout << "Paid."; paid++; } } }
cout << "\n'b' to buy \t 'c' to clear \t 'e' to end turn \t 's' to look at street\n> ";
cin >> a;
if (a=='b') { p[ qu ].buyStreet( s[ p[ qu ].getPosition()] ); cout << p[qu].getPosition() << qu; }
else if (a=='c') { system("cls"); }
else if (a == 'e') { break; }
else if (a == 's') { cout << "\nSelect position of street you want to look at:\n> "; cin >> temp; s[ temp ].card(); }
else { cout << "\n===========ERROR===============" << a; }
}
world.endTurn(que_change, players);
system("cls");
} // tymczasowy stopper
}
i chciałbym cały setting up wyrzucic do innego pliku bo juz nie jest mi tu potrzebny a strasznie denerwuje mnie przewijanie tego wszystkiego