CSC112 Spring 2016 Examples
#include <iostream>1#include <unistd.h>2#include "fracas.h"3#include "alpaca.h"4#include "alpacaFracasPack.h"5#include "termmanip.h"67#define DELAY 5000008#define FRACAS_LINE 13910using namespace std;1112Fracas::Fracas(AlpacaFracasPack *p1, AlpacaFracasPack *p2)13{14//load the packs!15this->p1 = p1;16this->p2 = p2;17}181920//run the fracas and return the winner!21AlpacaFracasPack *22Fracas::go()23{24Alpaca *a1;25Alpaca *a2;26AlpacaFracasPack *winner;2728//unload the first two combatiants29a1=p1->unload();30a2=p2->unload();31cout << cursorPosition(1, FRACAS_LINE+1);3233//let the fracas commence!34while(a1 != NULL and a2 != NULL) {35clearStatusArea();36printAlpaca(1, p1, a1);37printAlpaca(41, p2, a2);38cout.flush();39usleep(DELAY);4041//a1 goes first42a1->performRound(a2);43//update the display44clearStatusArea();45printAlpaca(1, p1, a1);46printAlpaca(41, p2, a2);47cout.flush();48if(a2->getHp() <= 0 || a2->getPower() == 0) {49cout << a2->name() << " dies." << endl;50a2 = p2->unload();51if(a2==NULL) continue;52cout << a2->name() << " comes out." << endl;53}545556//a2 goes second57a2->performRound(a1);58//update the display59clearStatusArea();60printAlpaca(1, p1, a1);61printAlpaca(41, p2, a2);62cout.flush();63if(a1->getHp() <= 0 || a1->getPower()==0) {64cout << a1->name() << " dies." << endl;65a1 = p1->unload();66if(a1==NULL) continue;67cout << a1->name() << " comes out." << endl;68}69}7071//detect the winner72if(a1!=NULL) {73winner = p1;74} else {75winner = p2;76}7778//print the winner79cout << cursorPosition(30, FRACAS_LINE-3) << "** " << winner->name() << " wins! **";80cout.flush();81sleep(5);8283return winner;84}858687//display the alpaca at the given x coordinate88void89Fracas::printAlpaca(int x, AlpacaFracasPack *p, Alpaca *a)90{91int y=1;9293cout << saveCursor;9495//print the pack information96cout << cursorPosition(x,y) << p->name() << " " << p->packSize() << " remaining alpacas";97y+=2;9899100//print the alpaca information in a nice pack-like way101cout << cursorPosition(x, y) << a->name();102y++;103cout << cursorPosition(x+2,y) << "HP: " << cursorPosition(x+12, y) << a->getHp();104y++;105cout << cursorPosition(x+2,y) << "Power: " << cursorPosition(x+12, y) << a->getPower();106y++;107cout << cursorPosition(x+2,y) << "Attack: " << cursorPosition(x+12, y) << a->getAttack();108y++;109cout << cursorPosition(x+2, y) << "Defense: " << cursorPosition(x+12, y) << a->getDefense();110y++;111cout << cursorPosition(x+2, y) << "Status: " << cursorPosition(x+12, y);112switch(a->getStatus()) {113case NONE:114cout << "Normal";115break;116case ASLEEP:117cout << "Asleep";118break;119case STUNNED:120cout << "Stunned";121break;122}123124cout << restoreCursor;125}126127128void129Fracas::clearStatusArea()130{131cout << saveCursor;132//clear the top FRACAS_LINE lines133for(int i=1; i<=FRACAS_LINE; i++) {134cout << cursorPosition(1,i) << clearLine;135}136cout << restoreCursor;137}138139