CSC112 Spring 2016 Examples
head 1.1;
access;
symbols;
locks; strict;
comment @// @;
1.1
date 2016.03.17.15.55.14; author pngwen; state Exp;
branches;
next ;
desc
@@
1.1
log
@Initial revision
@
text
@// A little test for the peg class
// Revision: $Revision$
// Change Log
// $Log$
#include <iostream>
#include <vector>
#include "peg.h"
#include "termmanip.h"
#include "keystream.h"
using namespace std;
int main()
{
vector<Peg *> pegs;
keycode kc;
int selectedIndex=0;
//set up the pegs
pegs.push_back(new Peg(2,3));
pegs.push_back(new Peg(7,3));
pegs.push_back(new Peg(12,3));
pegs[selectedIndex]->select();
//set up the input
kin.rawMode();
cout << clearScreen << cursorOff;
//display the pegs
for(auto itr = pegs.begin(); itr != pegs.end(); itr++) {
(*itr)->display();
}
//process the keyboard
do {
kc = kin.getKey();
switch(kc) {
case RIGHT:
pegs[selectedIndex]->deselect();
selectedIndex = (selectedIndex + 1) % pegs.size();
pegs[selectedIndex]->select();
break;
case LEFT:
pegs[selectedIndex]->deselect();
selectedIndex = selectedIndex ? selectedIndex-1 : pegs.size()-1;
pegs[selectedIndex]->select();
break;
case ENTER:
if(pegs[selectedIndex]->isOccupied()) {
pegs[selectedIndex]->take();
} else {
pegs[selectedIndex]->place();
}
break;
case ESC:
kc = CTRL_C;
break;
}
} while(kc != CTRL_C);
cout << clearScreen << cursorOn << cursorPosition(1,1);
cout.flush();
return 0;
}
@