//samantha petro. created 30 sept 2006. last edited 17 oct 2006. //CISfinal.cpp - main file #include #include #include #include "duelist.h" #include "card.h" using namespace std; void main() { //intro system cout << "This is a basic turn-based simulator of\n" << "a war between two players with a deck full\n" << "of monster cards. When a player's lifepoints\n" << "go below 0. The simulation will pause after\n" << "each round. Simply press any key to contine.\n\n" << "Press any key to begin the simulation\n"; getch(); cout << "============================================\n\n"; //create card vars. reuseable card d0card; //d0's played card card d1card; //d1's played card //choose duelists enum {BLANK, YAMI, BAKU, KAIBA, JOU, JIDAI, MALIK}; //created duelists vector duelists; int choice; duelist d; cout << "Choose two duelists:\n" << "1 Yami - magician deck\n" << "2 Bakura - fiend deck\n" << "3 Kaiba - dragon deck\n" << "4 Jou - chance deck\n" << "5 Jidai - elemental deck\n" << "6 Malik - Egyptian deck\n" << "1st duelist: "; cin >> choice; for (int k = 0; k < 2; k++) { if (k == 1){ cout << "2nd duelist: "; cin >> choice; } switch(choice){ //push proper duelist onto vector case YAMI: d.setData("Yami", "yami.txt"); duelists.push_back(d); break; case BAKU: d.setData("Bakura", "bakura.txt"); duelists.push_back(d); break; case KAIBA: d.setData("Kaiba", "kaiba.txt"); duelists.push_back(d); break; case JOU: d.setData("Jou", "jou.txt"); duelists.push_back(d); break; case JIDAI: d.setData("Jidai", "jidai.txt"); duelists.push_back(d); break; case MALIK: d.setData("Malik", "malik.txt"); duelists.push_back(d); break; default: cout << "choice not valid.\n"; k--; break; } } //push blank swap duelist onto vector duelist d2; duelists.push_back(d2); //create a bool var used for display bool swapped = false; cout << "\nBEGIN SIM\n============================================\n\n"; //================== main sim loop ============== // bool simover = false; while (!simover) { //--------display player stats cout << "Player life points:\n"; if (!swapped) { //duelist 1 cout << setw(7) << left << duelists[0].getname() << setw(4) << right << duelists[0].getLP() << "LP\n" //duelist 2 << setw(7) << left << duelists[1].getname() << setw(4) << right << duelists[1].getLP() << "LP\n\n"; } else { //duelist 2 cout << setw(7) << left << duelists[1].getname() << setw(4) << right << duelists[1].getLP() << "LP\n\n" //duelist 1 << setw(7) << left << duelists[0].getname() << setw(4) << right << duelists[0].getLP() << "LP\n"; } //--------duelists draw cards d0card = duelists[0].draw(); d1card = duelists[1].draw(); //display cards cout //duelist 1 << duelists[0].getname() << " has drawn " << d0card << endl << duelists[1].getname() << " has drawn " << d1card << "\n -- DUEL! --\n"; //-------- calculate battle damage if (d0card > d1card){ //if d0card's atk > d1card's def cout << d1card.getName() << " loses. " << duelists[1].getname() << " loses " << d0card.getATK() - d1card.getDEF() << "LP\n"; duelists[1].damage(d0card.getATK() - d1card.getDEF()); } else if (d0card < d1card) { //if d0card's atk < d1card's def cout << d0card.getName() << " loses. " << duelists[0].getname() << " loses " << d1card.getDEF() - d0card.getATK() << "LP\n"; duelists[0].damage(d1card.getDEF() - d0card.getATK()); } else //if d0card's atk == d1card's def cout << "This round is a draw.\n"; //-------- check if decks are empty //if decks are empty, sim is over if (!duelists[0].hasCards()) simover=true; else if (!duelists[1].hasCards()) simover=true; //-------- check LP //if lp <= 0, that duelist loses the sim if (duelists[0].getLP() <= 0) { cout << " -- " << duelists[0].getname() << " loses the sim --\n"; simover = true; } else if (duelists[1].getLP() <= 0) { cout << " -- " << duelists[1].getname() << " loses the sim --\n"; simover = true; } //--------- swap players //duelists.swap(invduelists); //swap causes drawn card to return to deck until the two are //swapped back to original form // ---- try reversing vector? duelists[2] = duelists[0]; //store duelist 0 at index 2 duelists[0] = duelists[1]; //move duelist 1 to index 0 duelists[1] = duelists[2]; //move duelist 0 to index 1. swap done //set boolean switch if (swapped) swapped = false; else swapped = true; cout << "============================================\n\n"; getch(); } }