Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

CSC112 Spring 2016 Examples

2370 views
1
// A little test for the peg class
2
// Revision: $Revision: 1.1 $
3
// Change Log
4
// $Log: pegtest.cpp,v $
5
// Revision 1.1 2016/03/17 15:55:14 pngwen
6
// Initial revision
7
//
8
9
#include <iostream>
10
#include <vector>
11
#include "peg.h"
12
#include "termmanip.h"
13
#include "keystream.h"
14
15
using namespace std;
16
17
int main()
18
{
19
vector<Peg *> pegs;
20
keycode kc;
21
int selectedIndex=0;
22
23
//set up the pegs
24
pegs.push_back(new Peg(2,3));
25
pegs.push_back(new Peg(7,3));
26
pegs.push_back(new Peg(12,3));
27
pegs[selectedIndex]->select();
28
29
//set up the input
30
kin.rawMode();
31
cout << clearScreen << cursorOff;
32
33
//display the pegs
34
for(auto itr = pegs.begin(); itr != pegs.end(); itr++) {
35
(*itr)->display();
36
}
37
38
//process the keyboard
39
do {
40
kc = kin.getKey();
41
switch(kc) {
42
case RIGHT:
43
pegs[selectedIndex]->deselect();
44
selectedIndex = (selectedIndex + 1) % pegs.size();
45
pegs[selectedIndex]->select();
46
break;
47
48
case LEFT:
49
pegs[selectedIndex]->deselect();
50
selectedIndex = selectedIndex ? selectedIndex-1 : pegs.size()-1;
51
pegs[selectedIndex]->select();
52
break;
53
54
case ENTER:
55
if(pegs[selectedIndex]->isOccupied()) {
56
pegs[selectedIndex]->take();
57
} else {
58
pegs[selectedIndex]->place();
59
}
60
break;
61
62
case ESC:
63
kc = CTRL_C;
64
break;
65
}
66
} while(kc != CTRL_C);
67
68
69
cout << clearScreen << cursorOn << cursorPosition(1,1);
70
cout.flush();
71
72
return 0;
73
}
74
75