Thread: Greed Game Problem - Hang Up In The Middle of a Function

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Jan 2012
    Posts
    3

    Greed Game Problem - Hang Up In The Middle of a Function

    Hello everyone,

    I'm having a bit of trouble with my code following through with the rest of a particular function. I've done some printf tests throughout and am finding that it doesn't seem to be doing anything after the user presses enter to continue on with the game.

    I know my code is long and not very efficient, but I only need to be able to present a functional program this time around and not focus on function separation and whatnot. I believe it's hung up in the diceRoll function. Any insight would be greatly appreciated

    PS - I worked in the Java environment about a year ago and haven't touched on it at all since, and am starting in C without ever having programmed in it before. I know that Java derives from C, but there's quite a bit of difference from what I can see. It wouldn't surprise me if it was something entirely mundane that I was forgetting.

    Code:
    #include <stdio.h>#include <stdlib.h>
    #include <time.h>
    
    
    char player_1[20], player_2[20];
    int player_start, points_to_win, currentPlayer, win, player1TotalScore;
    int player2TotalScore, rollScore, turnScore;
    int dice[5];
    
    
    void threePair();
    void singles();
    void sixOKind();
    void fiveOKind();
    void fourOKind();
    void triples();
    void straight();
    void six1();
    void winning();
    void diceRoll();
    
    
    int main()
    {
    	int i;
    	player1TotalScore = 0;
    	player2TotalScore = 0;
    	win = 0;
    	printf("**********************************\n");
    	printf("** Welcome to the Game of Greed **\n");
    	printf("**********************************\n\n");
    	printf("Name of player 1? ");
    	scanf("%s", player_1);
    	fflush(stdout);
    	printf("Name of player 2? ");
    	scanf("%s", player_2);
    	fflush(stdout);
    	printf("Player to start the game (1 of %s, 2 for %s)? ", player_1, player_2);
    	scanf("%d", &player_start);
    	fflush(stdout);
    	printf("Points to win the game? ");
    	scanf("%d", &points_to_win);
    	fflush(stdout);
    	for(i = 0; i < 6; i++)
    		dice[i] = 20;
    	diceRoll();
    	return 0;
    }
    
    
    void diceRoll()
    {
    	char c;
    	currentPlayer = player_start;
    	while((win == 0) && (player1TotalScore < points_to_win) && (player2TotalScore < points_to_win)) {
    		if(currentPlayer == 1) {
    			printf("%s's Turn >> Press Enter to roll the dice", player_1);
    			getch();
    			srand(time(NULL));
    
    
    			int i;
    			for(i = 0; i < 6; i++) {
    				if(dice[i] == 20 || dice[i] != 0) {
    					dice[i] = rand() % 6 + 1;
    				}
    			}
    
    
    			printf("\n%i  ", dice[0]);
    			printf("%i  ", dice[1]);
    			printf("%i  ", dice[2]);
    			printf("%i  ", dice[3]);
    			printf("%i  ", dice[4]);
    			printf("%i\t", dice[5]);
    
    
    			six1();
    			straight();
    			threePair();
    			sixOKind();
    			fiveOKind();
    			fourOKind();
    			triples();
    			singles();
    
    
    			printf("Roll Score: %i\t", rollScore);
    			printf("Turn Score: %i\n", turnScore);
    		} else if(currentPlayer == 2) {
    			printf("%s's Turn >> Press Enter to roll the dice", player_2);
    			getch();
    			srand(time(NULL));
    			int i;
    			for(i = 0; i < 6; i++) {
    				dice[i] = rand() % 6 + 1;
    			}
    
    
    			printf("\n%i  ", dice[0]);
    			printf("%i  ", dice[1]);
    			printf("%i  ", dice[2]);
    			printf("%i  ", dice[3]);
    			printf("%i  ", dice[4]);
    			printf("%i  ", dice[5]);
    
    
    			six1();
    			straight();
    			threePair();
    			sixOKind();
    			fiveOKind();
    			fourOKind();
    			triples();
    			singles();
    
    
    			printf("Roll Score: %i\t", rollScore);
    			printf("Turn Score: %i\n", turnScore);
    		}
    
    
    		winning();
    		if(win != 1) {
    			if(rollScore != 0) {
    				printf("Would you like to roll ");
    				printf("again (Y/y, N/n)?");
    				c = getchar();
    				if(c == 'Y' || c == 'y') {
    					rollScore = 0;
    					diceRoll();
    				} else if(c == 'N' || c == 'n') {
    					rollScore = 0;
    					turnScore = 0;
    					if(currentPlayer == 1)
    						currentPlayer = 2;
    					else
    						currentPlayer = 1;
    				}
    			} else if(rollScore == 0) {
    				if(currentPlayer == 1) {
    					player1TotalScore = player1TotalScore - turnScore;
    					currentPlayer = 2;
    				} else if(currentPlayer == 2) {
    					player2TotalScore = player2TotalScore - turnScore;
    					currentPlayer = 1;
    				}
    			}
    		}
    	}
    	if(currentPlayer == 1) {
    		printf("Congratulations %s!", player_1);
    		printf("You won the game!");
    	}
    	else if(currentPlayer == 2) {
    		printf("Congratulations %s!", player_2);
    		printf("You won the game!");
    	}
    }
    
    
    void winning()
    {
    	if(currentPlayer == 1) {
    		if(player1TotalScore >= points_to_win)
    			win = 1;
    		else
    			win = 0;
    
    
    	} else if(currentPlayer == 2) {
    		if(player2TotalScore >= points_to_win)
    			win = 2;
    		else
    			win = 0;
    	}
    }
    
    
    void six1()
    {
        printf("test");
    	int i;
    	int j;
    	int counter = 0;
    	for(i = 0; i < 6; i++) {
    		if(dice[i] == 1)
    			counter = counter + 1;
    	}
    	if(counter == 6) {
    		for(j = 0; j < 6; j++)
    			dice[i] = 0;
    		if(currentPlayer == 1) {
    			player1TotalScore = player1TotalScore + 8000;
    			rollScore = rollScore + 8000;
    			turnScore = turnScore + 8000;
    		}
    		else if(currentPlayer == 2) {
    			player2TotalScore = player2TotalScore + 8000;
    			rollScore = rollScore + 8000;
    			turnScore = turnScore + 8000;
    		}
    	}
    }
    
    
    void straight()
    {
        printf("test");
    	int one_define = 0;
    	int two_define = 0;
    	int three_define = 0;
    	int four_define = 0;
    	int five_define = 0;
    	int six_define = 0;
    	int i;
    	int j;
    	for(i = 0; i < 6; i++) {
    		if(dice[i] == 1 && one_define == 0)
    			one_define = 1;
    		else if(dice[i] == 2 && two_define == 0)
    			two_define = 1;
    		else if(dice[i] == 3 && three_define == 0)
    			three_define = 1;
    		else if(dice[i] == 4 && four_define == 0)
    			four_define = 1;
    		else if(dice[i] == 5 && five_define == 0)
    			five_define = 1;
    		else if(dice[i] == 6 && six_define == 0)
    			six_define = 1;
    		else
    			break;
    	}
    	if(one_define == 1 && two_define == 1 && three_define == 1 && four_define == 1
    	&& five_define == 1 && six_define == 1) {
    		for(j = 0; j < 6; j++)
    			dice[j] = 0;
    		if(currentPlayer == 1) {
    			rollScore = rollScore + 1200;
    			turnScore = turnScore + 1200;
    			player1TotalScore = player1TotalScore + 1200;
    		} else if(currentPlayer == 2) {
    			rollScore = rollScore + 1200;
    			turnScore = turnScore + 1200;
    			player2TotalScore = player2TotalScore + 1200;
    		}
    	}
    }
    
    
    void threePair() {
        printf("test");
    	int one_define = 0;
    	int two_define = 0;
    	int three_define = 0;
    	int four_define = 0;
    	int five_define = 0;
    	int six_define = 0;
    	int i;
    	int j;
    	int k;
    	int l;
    	int counter = 0;
    	for(i = 0; i < 6; i++) {
    		if(dice[i] == 1 && one_define != 2)
    			one_define = one_define + 1;
    		else if(dice[i] == 2 && two_define != 2)
    			two_define = two_define + 1;
    		else if(dice[i] == 3 && three_define != 2)
    			three_define = three_define + 1;
    		else if(dice[i] == 4 && four_define != 2)
    			four_define = four_define + 1;
    		else if(dice[i] == 5 && five_define != 2)
    			five_define = five_define + 1;
    		else if(dice[i] == 6 && six_define != 2)
    			six_define = six_define + 1;
    		else
    			break;
    	}
    	int defineArray[5];
    	for(j = 0; j < 6; j++) {
    		if(j == 0)
    			defineArray[j] = one_define;
    		if(j == 1)
    			defineArray[j] = two_define;
    		if(j == 2)
    			defineArray[j] = three_define;
    		if(j == 3)
    			defineArray[j] = four_define;
    		if(j == 4)
    			defineArray[j] = five_define;
    		if(j == 5)
    			defineArray[j] = six_define;
    	}
    	for(k = 0; k < 6; k++) {
    		if(defineArray[k] == 2)
    			counter = counter + 1;
    	}
    	if(counter == 3) {
    		for(l = 0; l < 6; l++)
    			dice[l] = 0;
    		if(currentPlayer == 1) {
    			player1TotalScore = player1TotalScore + 800;
    			rollScore = rollScore + 800;
    			turnScore = turnScore + 800;
    		} else if (currentPlayer == 2) {
    			player2TotalScore = player2TotalScore + 800;
    			rollScore = rollScore + 800;
    			turnScore = turnScore + 800;
    		}
    	}
    }
    
    
    void sixOKind()
    {
        printf("test");
    	int one_define = 0;
    	int two_define = 0;
    	int three_define = 0;
    	int four_define = 0;
    	int five_define = 0;
    	int six_define = 0;
    	int i;
    	int j;
    	int k;
    	int l;
    	int scoreMultiplier;
    	for(i = 0; i < 6; i++) {
    		if(dice[i] == 1)
    			one_define = one_define + 1;
    		else if(dice[i] == 2)
    			two_define = two_define + 1;
    		else if(dice[i] == 3)
    			three_define = three_define + 1;
    		else if(dice[i] == 4)
    			four_define = four_define + 1;
    		else if(dice[i] == 5)
    			five_define = five_define + 1;
    		else if(dice[i] == 6)
    			six_define = six_define + 1;
    		else
    			break;
    	}
    	int defineArray[5];
    	for(j = 0; j < 6; j++) {
    		if(j = 0)
    			defineArray[j] = one_define;
    		else if(j = 1)
    			defineArray[j] = two_define;
    		else if(j = 2)
    			defineArray[j] = three_define;
    		else if(j = 3)
    			defineArray[j] = four_define;
    		else if(j = 4)
    			defineArray[j] = five_define;
    		else if(j = 6)
    			defineArray[j] = six_define;
    	}
    	for(k = 0; k < 6; k++) {
    		if(defineArray[k] == 6) {
    			for(l = 0; l < 6; l++)
    				dice[l] = 0;
    			if(k == 0)
    				scoreMultiplier = 8000;
    			else if(k == 1)
    				scoreMultiplier = 1600;
    			else if(k == 2)
    				scoreMultiplier = 2400;
    			else if(k == 3)
    				scoreMultiplier = 3200;
    			else if(k == 4)
    				scoreMultiplier = 4000;
    			else if(k = 5)
    				scoreMultiplier = 4800;
    		}
    		if(currentPlayer == 1) {
    			player1TotalScore = player1TotalScore +
    			scoreMultiplier;
    			rollScore = rollScore + scoreMultiplier;
    			turnScore = turnScore + scoreMultiplier;
    		} else if (currentPlayer == 2) {
    			player2TotalScore = player2TotalScore +
    			scoreMultiplier;
    			rollScore = rollScore + scoreMultiplier;
    			turnScore = turnScore + scoreMultiplier;
    		}
    
    
    	}
    }
    
    
    void fiveOKind()
    {
        printf("test");
    	int one_define = 0;
    	int two_define = 0;
    	int three_define = 0;
    	int four_define = 0;
    	int five_define = 0;
    	int six_define = 0;
    	int i;
    	int j;
    	int k;
    	int l;
    	int scoreMultiplier;
    	for(i = 0; i < 6; i++) {
    		if(dice[i] == 1)
    			one_define = one_define + 1;
    		else if(dice[i] == 2)
    			two_define = two_define + 1;
    		else if(dice[i] == 3)
    			three_define = three_define + 1;
    		else if(dice[i] == 4)
    			four_define = four_define + 1;
    		else if(dice[i] == 5)
    			five_define = five_define + 1;
    		else if(dice[i] == 6)
    			six_define = six_define + 1;
    		else
    			break;
    	}
    	int defineArray[5];
    	for(j = 0; j < 6; j++) {
    		if(j = 0)
    			defineArray[j] = one_define;
    		else if(j = 1)
    			defineArray[j] = two_define;
    		else if(j = 2)
    			defineArray[j] = three_define;
    		else if(j = 3)
    			defineArray[j] = four_define;
    		else if(j = 4)
    			defineArray[j] = five_define;
    		else if(j = 6)
    			defineArray[j] = six_define;
    	}
    	for(k = 0; k < 6; k++) {
    		if(defineArray[k] == 5) {
    			if(k == 0) {
    				scoreMultiplier = 4000;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 1)
    						dice[l] = 0;
    				}
    			}
    			else if(k == 1) {
    				scoreMultiplier = 800;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 2)
    						dice[l] = 0;
    				}
    			}
    			else if(k == 2) {
    				scoreMultiplier = 1200;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 3)
    						dice[l] = 0;
    				}
    			}
    			else if(k == 3) {
    				scoreMultiplier = 1600;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 4)
    						dice[l] = 0;
    				}
    			}
    			else if(k == 4) {
    				scoreMultiplier = 2000;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 5)
    						dice[l] = 0;
    				}
    			}
    			else if(k = 5) {
    				scoreMultiplier = 2400;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 6)
    						dice[l] = 0;
    				}
    			}
    		}
    	}
    	if(currentPlayer == 1) {
    		player1TotalScore = player1TotalScore +
    		scoreMultiplier;
    		rollScore = rollScore + scoreMultiplier;
    		turnScore = turnScore + scoreMultiplier;
    	} else if (currentPlayer == 2) {
    		player2TotalScore = player2TotalScore +
    		scoreMultiplier;
    		rollScore = rollScore + scoreMultiplier;
    		turnScore = turnScore + scoreMultiplier;
    	}
    }
    
    
    void fourOKind()
    {
        printf("test");
    	int one_define = 0;
    	int two_define = 0;
    	int three_define = 0;
    	int four_define = 0;
    	int five_define = 0;
    	int six_define = 0;
    	int i;
    	int j;
    	int k;
    	int l;
    	int scoreMultiplier;
    	for(i = 0; i < 6; i++) {
    		if(dice[i] == 1)
    			one_define = one_define + 1;
    		else if(dice[i] == 2)
    			two_define = two_define + 1;
    		else if(dice[i] == 3)
    			three_define = three_define + 1;
    		else if(dice[i] == 4)
    			four_define = four_define + 1;
    		else if(dice[i] == 5)
    			five_define = five_define + 1;
    		else if(dice[i] == 6)
    			six_define = six_define + 1;
    		else
    			break;
    	}
    	int defineArray[5];
    	for(j = 0; j < 6; j++) {
    		if(j = 0)
    			defineArray[j] = one_define;
    		else if(j = 1)
    			defineArray[j] = two_define;
    		else if(j = 2)
    			defineArray[j] = three_define;
    		else if(j = 3)
    			defineArray[j] = four_define;
    		else if(j = 4)
    			defineArray[j] = five_define;
    		else if(j = 6)
    			defineArray[j] = six_define;
    	}
    	for(k = 0; k < 6; k++) {
    		if(defineArray[k] == 4) {
    			if(k == 0) {
    				scoreMultiplier = 2000;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 1)
    						dice[l] = 0;
    				}
    			}
    			else if(k == 1) {
    				scoreMultiplier = 400;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 2)
    						dice[l] = 0;
    				}
    			}
    			else if(k == 2) {
    				scoreMultiplier = 600;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 3)
    						dice[l] = 0;
    				}
    			}
    			else if(k == 3) {
    				scoreMultiplier = 800;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 4)
    						dice[l] = 0;
    				}
    			}
    			else if(k == 4) {
    				scoreMultiplier = 1000;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 5)
    						dice[l] = 0;
    				}
    			}
    			else if(k = 5) {
    				scoreMultiplier = 1200;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 6)
    						dice[l] = 0;
    				}
    			}
    		}
    	}
    	if(currentPlayer == 1) {
    		player1TotalScore = player1TotalScore +
    		scoreMultiplier;
    		rollScore = rollScore + scoreMultiplier;
    		turnScore = turnScore + scoreMultiplier;
    	} else if (currentPlayer == 2) {
    		player2TotalScore = player2TotalScore +
    		scoreMultiplier;
    		rollScore = rollScore + scoreMultiplier;
    		turnScore = turnScore + scoreMultiplier;
    	}
    }
    
    
    void triples()
    {
        printf("test");
    	int one_define = 0;
    	int two_define = 0;
    	int three_define = 0;
    	int four_define = 0;
    	int five_define = 0;
    	int six_define = 0;
    	int i;
    	int j;
    	int k;
    	int l;
    	int scoreMultiplier;
    	for(i = 0; i < 6; i++) {
    		if(dice[i] == 1)
    			one_define = one_define + 1;
    		else if(dice[i] == 2)
    			two_define = two_define + 1;
    		else if(dice[i] == 3)
    			three_define = three_define + 1;
    		else if(dice[i] == 4)
    			four_define = four_define + 1;
    		else if(dice[i] == 5)
    			five_define = five_define + 1;
    		else if(dice[i] == 6)
    			six_define = six_define + 1;
    		else
    			break;
    	}
    	int defineArray[5];
    	for(j = 0; j < 6; j++) {
    		if(j = 0)
    			defineArray[j] = one_define;
    		else if(j = 1)
    			defineArray[j] = two_define;
    		else if(j = 2)
    			defineArray[j] = three_define;
    		else if(j = 3)
    			defineArray[j] = four_define;
    		else if(j = 4)
    			defineArray[j] = five_define;
    		else if(j = 6)
    			defineArray[j] = six_define;
    	}
    	for(k = 0; k < 6; k++) {
    		if(defineArray[k] == 3) {
    			if(k == 0) {
    				scoreMultiplier = scoreMultiplier
    				+ 1000;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 1)
    						dice[l] = 0;
    				}
    			}
    			if(k == 1) {
    				scoreMultiplier = scoreMultiplier
    				+ 200;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 2)
    						dice[l] = 0;
    				}
    			}
    			if(k == 2) {
    				scoreMultiplier = scoreMultiplier
    				+ 300;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 3)
    						dice[l] = 0;
    				}
    			}
    			if(k == 3) {
    				scoreMultiplier = scoreMultiplier
    				+ 400;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 4)
    						dice[l] = 0;
    				}
    			}
    			if(k == 4) {
    				scoreMultiplier = scoreMultiplier
    				+ 500;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 5)
    						dice[l] = 0;
    				}
    			}
    			if(k = 5) {
    				scoreMultiplier = scoreMultiplier
    				+ 600;
    				for(l = 0; l < 6; l++) {
    					if(dice[l] == 6)
    						dice[l] = 0;
    				}
    			}
    		}
    	}
    	if(currentPlayer == 1) {
    		player1TotalScore = player1TotalScore +
    		scoreMultiplier;
    		rollScore = rollScore + scoreMultiplier;
    		turnScore = turnScore + scoreMultiplier;
    	} else if (currentPlayer == 2) {
    		player2TotalScore = player2TotalScore +
    		scoreMultiplier;
    		rollScore = rollScore + scoreMultiplier;
    		turnScore = turnScore + scoreMultiplier;
    	}
    }
    
    
    void singles()
    {
        printf("test");
    	int one_define = 0;
    	int five_define = 0;
    	int i;
    	int j;
    	int k;
    	int l;
    	int scoreMultiplier;
    	for(i = 0; i < 6; i++) {
    		if(dice[i] == 1)
    			one_define = one_define + 1;
    		else if(dice[i] == 5)
    			five_define = five_define + 1;
    	}
    	int defineArray[1];
    	for(j = 0; j < 1; j++) {
    		if(j = 0)
    			defineArray[0] = one_define;
    		else if(j = 1)
    			defineArray[1] = five_define;
    	}
    	for(k = 0; k < 1; k++) {
    		if(k == 0) {
    			scoreMultiplier = scoreMultiplier
    			+ 100;
    			for(l = 0; l < 6; l++) {
    				if(dice[l] == 1)
    					dice[l] = 0;
    			}
    		}
    		if(k == 1) {
    			scoreMultiplier = scoreMultiplier
    			+ 50;
    			for(l = 0; l < 6; l++) {
    				if(dice[l] == 5)
    					dice[l] = 0;
    			}
    		}
    	}
    	if(currentPlayer == 1) {
    		player1TotalScore = player1TotalScore +
    		scoreMultiplier;
    		rollScore = rollScore + scoreMultiplier;
    		turnScore = turnScore + scoreMultiplier;
    	} else if (currentPlayer == 2) {
    		player2TotalScore = player2TotalScore +
    		scoreMultiplier;
    		rollScore = rollScore + scoreMultiplier;
    		turnScore = turnScore + scoreMultiplier;
    	}
    }
    Last edited by Newwisdom01; 01-29-2012 at 01:42 AM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 3
    Last Post: 11-02-2011, 05:31 PM
  2. A problem in the middle of ... !
    By Coca cola in forum C++ Programming
    Replies: 3
    Last Post: 02-27-2011, 11:58 AM
  3. Name Problem: First, Middle, Last
    By Sedition X in forum C Programming
    Replies: 24
    Last Post: 02-02-2011, 09:33 AM
  4. problem inserting node in middle of list
    By c_weed in forum C++ Programming
    Replies: 3
    Last Post: 12-22-2010, 09:14 PM
  5. Detab Function Loop Hang
    By neu_greg in forum C Programming
    Replies: 6
    Last Post: 01-27-2009, 05:33 PM

Tags for this Thread