Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

CSC112 Spring 2016 Examples

2370 views
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;
}
@