Browse Source

send is now completed. received pseudocode is written and needs to be coded.

wes 4 years ago
parent
commit
f698a46c7e
3 changed files with 88 additions and 20 deletions
  1. 86 16
      Qwixx/game.cpp
  2. 0 4
      Qwixx/main.cpp
  3. 2 0
      Qwixx/qwixx.h

+ 86 - 16
Qwixx/game.cpp

@@ -20,21 +20,26 @@ bool Game::addPlayer(std::string name){
         return false;
     }
 };
-void Game::score(){
+void Game::score()
+{
     // **CALCULATE EACH PLAYERS' SCORE**
     std::vector<int> pointsGuide = {0,1,3,6,10,15,21,28,36,45,55,66,78};
     // check players' card for marked boxes
-    for(int i = 0;i <players.size();i++){
+    for(int i = 0;i <players.size();i++)
+    {
         // clear each players' previous score
         players[i].score = 0;
         // calculate penalty amount
         players[i].score -= players[i].penaltyCount*PENALTY_VALUE;
         // check each color(row) on playerCard
-        for(int j = 0;j <white1;j++){
+        for(int j = 0;j <white1;j++)
+        {
             int count = 0;
             // check each box in row
-            for(int k =0;k <CHECKBOXES;k++){
-                if(true == players[i].rowColors[j][k]){
+            for(int k =0;k <CHECKBOXES;k++)
+            {
+                if(true == players[i].rowColors[j][k])
+                {
                     count++;
                 }
             }
@@ -43,42 +48,80 @@ void Game::score(){
     }
     // **CHECK IF GAME IS DONE**
     // check each player's card for penalties
-    for(int i = 0;i<players.size();i++){
+    for(int i = 0;i<players.size();i++)
+    {
         // check for maximum penalty to see if game is over
         if(players[i].penaltyCount == MAX_PENALTY){state = FINISHED;}      
     }
     // check for lockout to see if game is over
     int lockCount = 0;
-    for(int i = 0;i<lockOut.size();i++){
+    for(int i = 0;i<lockOut.size();i++)
+    {
         if(true == lockOut[i]){lockCount++;}
     }
-    if(MAX_LOCKOUT <= lockCount){
+    if(MAX_LOCKOUT <= lockCount)
+    {
         state = FINISHED;
     }
 }
-void Game::turn(PlayerCard activePlayer) {
+void Game::turn(PlayerCard activePlayer)
+{
     // start all players' turns
-    for(int i = 0; i <players.size();i++){
+    for(int i = 0; i <players.size();i++)
+    {
         players[i].isTurnDone = false;
     }
     // roll the dice
     dice.roll();
     // check to see if all players are done with turn
-    while(true){
+    while(true)
+    {
         bool temp = true;
-        for(int i = 0; i <players.size();i++){
+        for(int i = 0; i <players.size();i++)
+        {
             temp = temp && players[i].isTurnDone;
         }
         if(temp){break;}
         Sleep(1);
     }
+    // add selection to players' cards
+    for(int i = 0; i <players.size();i++)
+    {
+        int t;
+        // everyone can select a color and a check box
+        if(-1<(t = players[i].selection[everyone][row]))
+        {
+            int color = players[i].selection[everyone][row];
+            int checkbox = players[i].selection[everyone][column];
+            players[i].rowColors[color][checkbox] = true;
+        }
+        // active player can select a color and check box
+        if(-1<(t = players[i].selection[active][row]))
+        {
+            int color = players[i].selection[active][row];
+            int checkbox = players[i].selection[active][column];
+            players[i].rowColors[color][checkbox] = true;
+        }
+        // player selects to add penalty, increase the penalty count
+        if(0<(t = players[i].selection[penalty][0]))
+        {
+            players[i].penaltyCount++;
+        }
+    }
     // score the cards
     score();
 }
+
+// generate text: per player(48boxes, penalty count), locked off rows, dice roll, game end(when it occurs) send it
 std::string Game::send()
 {
     std::string output;
-    // gernerate text: per player(48boxes, penalty count), locked off rows, dice roll, game end(when it occurs) send it
+    if(dice.dice.size()==0){fprintf(stdout, "kyle is cool\n");}
+    // add dice values to output
+    for(int i = 0; i < dice.dice.size(); i++)
+    {
+        output.push_back(dice.dice[i] + '0');
+    }
     // look at each player card 
     for(int i = 0; i < players.size(); i++)
     {
@@ -92,11 +135,38 @@ std::string Game::send()
                 output.push_back(players[i].rowColors[j][k] ? 'T' : 'F');
             }
         }
+        // add penalty count to output
+        output.push_back(players[i].penaltyCount + '0');
     }
+    // add locked off row to output
+    for(int i = 0; i < lockOut.size();i++)
+    {
+        output.push_back(lockOut[i] ? 'T' : 'F');
+    }
+    // add game end to output
+    output.push_back(state == FINISHED ? 'T' : 'F');
+    // print everything needed to send current game state to players
     fprintf(stdout, "the output is: %s\n", output.c_str());
     return output;
 }
-void Game::receive(std::string userInput){
-    // newest item checked off on row&column (maybe 2) or penalty
-    // once data is received, add it to the playerCard
+
+// kyle's intention is to check off red 12 and blue 5
+// " 1143"
+// emma's intention is to take a penalty
+// "1"
+void Game::receive(std::string userInput)
+{
+    players[0].newSelection();
+    // penalties are marked to card if user string = 1
+    players[0].selection[penalty][0] = 1;
+    // did the user send a number?
+    // if a user did not send a number no changes take place
+    // take the userinput (string) and parse it into parts
+    // what is the length of the userInput? length of 2, 4? (boxes 0-9 are represented as 00,01,02...)
+    players[0].selection[everyone][row] = green;
+    players[0].selection[everyone][column] = 5;
+    players[0].selection[active][row] = yellow;
+    players[0].selection[active][column] = 11;
+    // convert userInput into number
+    // user number to change the boolean on corresponding spot on playerCard
 }

+ 0 - 4
Qwixx/main.cpp

@@ -1,12 +1,8 @@
 #include <iostream>
 #include <stdlib.h>
-#include "dice.h"
 #include "game.h"
 int main (){
     fprintf (stdout,"Qwixx initiated!\n");
-    Dice dice;
-    dice.roll();
-    dice.print();
     Game newgame;
     newgame.addPlayer("itsMe");
     newgame.send();

+ 2 - 0
Qwixx/qwixx.h

@@ -1,6 +1,8 @@
 #ifndef QWIXX
     #define QWIXX
     enum{NOT_STARTED, STARTED, FINISHED, PLAYING};
+    enum{row, column};
+    enum{penalty, everyone, active, selectionSize};
     // to add a color in the future, place it before white1 below
     enum {red, yellow, green, blue, white1, white2, colors};
     #define CHECKBOXES 12