Skip Navigation

Search

General Programming Discussion @lemmy.ml sparkingcircuit @lemmygrad.ml

Help with C

I've been working on re-implementing a board game in C. However, when running the players positions don't increment.\ Current output: 6, 9, 7, 6, 5, 5, 8, 7 6, 9, 7, 6, 5, 5, 8, 7 Expected output: 6, 9, 7, 6, 5, 5, 8, 7 14, 15, 19, 16, 13, 13, 14, 17 Code: ``` #include <stdlib.h> #include <stdio.h>

// Define types here: typedef enum {false, true} bool;

// Define constants here: const unsigned char MAXPLAYERS = 7; //Game has max of 8 players const unsigned char SPACES = 40; //Board has 40 spaces const unsigned int SEED = 51732; //Seed for random numbers const unsigned int DIE = 6; //Number of sides of die

// Define variables here: unsigned char player = 0; unsigned char player_position [] = {0, 0, 0, 0, 0, 0, 0, 0}; unsigned char die = 0;

// Define functions here: // Moves player Input spaces. void move_player (char moves) {

player_position [player] += moves; if (player_position [player] > SPACES) {

player_position [player] -= SPACES;

}

}

// Switches active player in order. void increment_player () {

player ++;

if (player > MAXPLAYERS) {

player = 0;

}

}

// Returns random number between 1 - Input. unsigned char rand_num (unsigned char max) {

unsigned char i;

i = rand () % max + 1;

return (i);

}

// Sets dice variable && returns 1 if double. bool roll_dice () {

unsigned char a = rand_num (DIE); unsigned char b = rand_num (DIE);

die = a + b;

return (0);

}

// Main logic int main () {

char input = 0;

srand (SEED); printf ("Game client started.\n", "Press enter to iterate turns.\n");

while (1) {

scanf ("%c", &input);

for (unsigned char i; i <= MAXPLAYERS; i++) {

roll_dice (); move_player (die);

increment_player ();

}

printf ("%2i, %2i, %2i, %2i, %2i, %2i, %2i, %2i\n", player_position [0], player_position [1], player_position [2], player_position [3], player_position [4], player_position [5], player_position [6], player_position [7]);

}

return (0);

} ```

3