Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1: #include <iostream>
- 2: #include <string>
- 3: #include <vector>
- 4: using namespace std;
- 5: //Laaja Ohjelmointi 1
- 6: //Harjoitustyö
- 7: //"EinStein würfelt nicht"
- 8:
- 9: int arpa ()
- 10: {
- 11: const int RMAX = RAND_MAX + 1;
- 12: double luku = rand ();
- 13: luku = luku * 6;
- 14: luku = luku / RMAX;
- 15: luku = luku + 1;
- 16: return static_cast<int>(luku);
- 17: }
- 18:
- 19: void kysySiemenluku ()
- 20: {
- 21: int siemenluku=0;
- 22: cout << "Anna siemenluku" << endl << "> ";
- 23: cin >> siemenluku;
- 24: srand(siemenluku);
- 25: }
- 26:
- 27: enum Pelaaja
- 28: {
- 29: Musta,
- 30: Valkea
- 31: };
- 32:
- 33: struct Kivi
- 34: {
- 35: bool vari;
- 36: int luku;
- 37: };
- 38:
- 39: struct Ruutu
- 40: {
- 41: int kivi;
- 42: bool tyhja;
- 43: };
- 44:
- 45: bool onkoElossa(vector<vector<Ruutu> > pelilauta, int kivinro)
- 46: {
- 47: for (int y = 0; y < 5; ++y)
- 48: {
- 49: for (int x = 0; x < 5; ++x)
- 50: {
- 51: if(pelilauta.at(y).at(x).kivi == kivinro)
- 52: {
- 53: return true;
- 54: }
- 55:
- 56: }
- 57: }
- 58: return false;
- 59: }
- 60:
- 61: vector<vector<Ruutu> > muodostaAlkuasetelma()
- 62: {
- 63: Ruutu kivi = {0, false};
- 64: vector<Ruutu> rivi;
- 65: vector<vector<Ruutu> > pelilauta;
- 66: bool vuoro;
- 67: int kivinro = arpa();
- 68:
- 69: for (int i = 0; i <= 4; ++i)
- 70: {
- 71: rivi.push_back(kivi);
- 72: }
- 73:
- 74: for(int j = 0; j <= 4; ++j)
- 75: {
- 76: pelilauta.push_back(rivi);
- 77: }
- 78:
- 79:
- 80: //koordinaatit(y,x)
- 81:
- 82: while(onkoElossa(pelilauta, kivinro) == true)
- 83: {
- 84: kivinro = arpa();
- 85: }
- 86:
- 87: pelilauta.at(0).at(0).kivi = kivinro;
- 88: pelilauta.at(4).at(4).kivi = -kivinro;
- 89:
- 90: while(onkoElossa(pelilauta, kivinro) == true)
- 91: {
- 92: kivinro = arpa();
- 93: }
- 94:
- 95: pelilauta.at(0).at(1).kivi = kivinro;
- 96: pelilauta.at(4).at(3).kivi = -kivinro;
- 97:
- 98: while(onkoElossa(pelilauta, kivinro) == true)
- 99: {
- 100: kivinro = arpa();
- 101: }
- 102:
- 103: pelilauta.at(0).at(2).kivi = kivinro;
- 104: pelilauta.at(4).at(2).kivi = -kivinro;
- 105:
- 106: while(onkoElossa(pelilauta, kivinro) == true)
- 107: {
- 108: kivinro = arpa();
- 109: }
- 110:
- 111: pelilauta.at(1).at(0).kivi = kivinro;
- 112: pelilauta.at(3).at(4).kivi = -kivinro;
- 113:
- 114: while(onkoElossa(pelilauta, kivinro) == true)
- 115: {
- 116: kivinro = arpa();
- 117: }
- 118:
- 119: pelilauta.at(1).at(1).kivi = kivinro;
- 120: pelilauta.at(3).at(3).kivi = -kivinro;
- 121:
- 122: while (onkoElossa(pelilauta, kivinro) == true)
- 123: {
- 124: kivinro = arpa();
- 125: }
- 126:
- 127: pelilauta.at(2).at(0).kivi = kivinro;
- 128: pelilauta.at(2).at(4).kivi = -kivinro;
- 129:
- 130: //(0,0),(0,1),(0,2)
- 131: //(1,0),(1,1)
- 132: //(2,0)
- 133: //(2,4)
- 134: //(3,4),(3,3)
- 135: //(4,4),(4,3),(4,2)
- 136:
- 137:
- 138: return pelilauta;
- 139:
- 140: }
- 141:
- 142: vector<vector<Ruutu> > tulostaPelilauta(vector<vector<Ruutu> > pelilauta);
- 143: {
- 144:
- 145: vector<vector<Ruutu> > pelilauta = muodostaAlkuasetelma();
- 146: for (int k = 0; k < 25; ++k)
- 147: {
- 148: }
- 149:
- 150: }
- 151:
- 152: enum Liike
- 153: {
- 154: //Mustan liikkeet
- 155: ita,
- 156: etela,
- 157: kaakko,
- 158: //Valkean liikkeet
- 159: lansi,
- 160: pohjoinen,
- 161: luode
- 162: };
- 163:
- 164: void siirto(vector<vector<Ruutu> > pelilauta);
- 165: {
- 166: int siirto = 0;
- 167: Pelaaja pelaaja;
- 168: int numero = 0;
- 169: //if (vuoro=true)
- 170: //kivi=kivi.numero
- 171: //if (vuoro=false)
- 172: //kivi=kivi.vari
- 173: //int liike = kiven vanha koordinaatti
- 174:
- 175: //tulostaPelilauta();
- 176: cout << pelaaja << " pelaaja, siirrä kiveä " << numero << endl << "> ";
- 177: cin >> siirto;
- 178:
- 179: switch (siirto)
- 180: {
- 181:
- 182: case 6:
- 183: // liike=pelilauta.at(y+1).at(x).kivi;
- 184: break;
- 185: case 2:
- 186: // liike=pelilauta.at(y).at(x+1).kivi;
- 187: break;
- 188: case 3:
- 189: // liike=pelilauta.at(y+1).at(x+1).kivi;
- 190: break;
- 191: case 4:
- 192: // liike=pelilauta.at(y).at(x-1).kivi;
- 193: break;
- 194: case 8:
- 195: // liike=pelilauta.at(y-1).at(x).kivi;
- 196: break;
- 197: case 9:
- 198: // liike=pelilauta.at(y-1).at(x-1).kivi;
- 199: break;
- 200: default:
- 201: cout << "VIRHE: Virheellinen suunta." << endl;
- 202: siirto(pelilauta);
- 203: }
- 204:
- 205: //if (laiton siirto)
- 206: //jos kivi.vari == musta
- 207: //laittomat siirrot
- 208: //4, 8, 7, 1, 9
- 209: //if (kivi.vari == valkea)
- 210: //6, 2, 3, 1, 9
- 211: {
- 212: cout << "VIRHE: Virheellinen suunta." << endl;
- 213: siirto(pelilauta);
- 214: }
- 215:
- 216: //if (OOB)
- 217: //if liike < ulompi.size tai liike > ulompi.size
- 218: //tai liike < sisempi.size tai liike > sisempi.size
- 219: //joka siirron tarkistu: on pysyttävä annettujen koordinaattien joukossa
- 220: //tarkistetaan vaan jos ollaan reunaruudussa
- 221: //tietyistä koordinaateista ei saa siirtyä tiettyyn suuntaan
- 222: {
- 223: cout << "VIRHE: Yritit siirtyä ulos laudalta." << endl;
- 224: siirto(pelilauta);
- 225: }
- 226:
- 227: }
- 228:
- 229: bool voittoasema(Pelaaja pelaaja)
- 230: {
- 231: if (pelaaja==Musta)
- 232: {
- 233: //pelilauta.at(4).at(4).kivi == musta;
- 234: //laudan läpikäynti, etsitään valkoisia kiviä
- 235: //jos on, return false
- 236: }
- 237:
- 238: if (pelaaja==Valkea)
- 239: {
- 240: //pelilauta.at(0).at(0).kivi == valkea;
- 241: //laudan läpikäynti, etsitään mustia
- 242: //jos on, return false
- 243:
- 244: }
- 245:
- 246: }
- 247:
- 248:
- 249: int main ()
- 250: {
- 251: Pelaaja pelaaja;
- 252: pelaaja = Musta;
- 253: kysySiemenluku ();
- 254:
- 255: muodostaAlkuasetelma ();
- 256:
- 257: while(true)
- 258: {
- 259:
- 260: arpa();
- 261: //tulostetaan vuorossa oleva kivi
- 262: //jos arvottua kiveä ei ole, etsitään siitä seuraavat kivet ja
- 263: //pyydetään valitsemaan ylempi tai alempi
- 264:
- 265: siirto();
- 266:
- 267:
- 268:
- 269:
- 270:
- 271:
- 272:
- 273:
- 274: if (voittoasema()==true)
- 275: {
- 276: cout << pelaaja << " pelaaja voitti pelin!" << endl;
- 277: }
- 278:
- 279: if (pelaaja == Musta)
- 280: {
- 281: pelaaja = Valkea;
- 282: }
- 283: else
- 284: {
- 285: pelaaja = Musta;
- 286: }
- 287:
- 288: }
- 289:
- 290:
- 291:
- 292:
- 293:
- 294:
- 295: return EXIT_SUCCESS;
- 296: }
Add Comment
Please, Sign In to add comment