Difference between revisions of "Tic Tac Toe"

From GbdevWiki
Jump to: navigation, search
Line 1: Line 1:
changes in progress
+
<pre>
 +
/*
 +
Tic tac Toe is know
 +
as noughts and crosses in the uk
 +
 
 +
feel free to edit the code to
 +
fix bugs or add gamemodes
 +
*/
 +
#include <stdio.h>
 +
#include <gb/gb.h>
 +
 
 +
#define MAXX 3
 +
#define MAXY 4
 +
 
 +
unsigned char player;
 +
unsigned char running = 1;
 +
unsigned char name1[10];//player 1's name
 +
unsigned char name2[10]; //player 2's name
 +
unsigned char Map[MAXX][MAXY] = {{46, 46, 46, 10},
 +
        {46, 46, 46, 10},
 +
        {46, 46, 46, 10}};// 46 = "." 10 = '\n
 +
void title();
 +
void You_Won();
 +
void clear_screen();
 +
void check_win();//check if a player has won
 +
void print_Map();
 +
void Enter_Name();
 +
void Set_Map(unsigned char x, unsigned char y, unsigned char k);
 +
 
 +
void title(){
 +
printf("Noughts and crosses!\n");
 +
printf("        xoo          \n");
 +
printf("        oxx          \n");
 +
printf("        ..x          \n");
 +
printf("    Press Start      \n");
 +
waitpad(J_START);
 +
clear_screen();
 +
return;
 +
}
 +
 
 +
void You_Won(){
 +
clear_screen();
 +
if (player == 1){
 +
printf("==================\n");
 +
printf("=                =\n");
 +
printf("=                =\n");
 +
printf("=    %s WINS!!!  \n", name1);
 +
printf("=    %s LOSES :(  \n", name2);
 +
printf("=                =\n");
 +
printf("=                =\n");
 +
printf("==================\n");
 +
printf("Press Start to reset!\n");
 +
waitpad(J_START);
 +
reset();
 +
}
 +
else{
 +
printf("==================\n");
 +
printf("=                =\n");
 +
printf("=                =\n");
 +
printf("=    %s WINS!!!  \n", name2);
 +
printf("=    %s LOSES :(  \n", name1);
 +
printf("=                =\n");
 +
printf("=                =\n");
 +
printf("==================\n");
 +
printf("Press Start to reset\n");
 +
waitpad(J_START);
 +
reset();
 +
}
 +
return;
 +
}
 +
 
 +
void check_win(){
 +
/*
 +
x..
 +
x..
 +
x..
 +
*/
 +
if (Map[0][0] == 88 && Map[1][0] == 88 && Map[2][0] == 88){player = 1;You_Won();}
 +
else if (Map[0][0] == 48 && Map[1][0] == 48 && Map[2][0] == 48){player = 2;You_Won();}
 +
/*
 +
.x.
 +
.x.
 +
.x.
 +
*/
 +
else if (Map[0][1] == 88 && Map[1][1] == 88 && Map[2][1] == 88){player = 1;You_Won();}
 +
else if (Map[0][0] == 48 && Map[1][0] == 48 && Map[2][0] == 48){player = 2;You_Won();}
 +
/*
 +
..x
 +
..x
 +
..x
 +
*/
 +
else if (Map[0][2] == 88 && Map[1][2] == 88 && Map[2][2] == 88){player = 1;You_Won();}
 +
else if (Map[0][2] == 48 && Map[1][2] == 48 && Map[2][2] == 48){player = 2;You_Won();}
 +
/*
 +
xxx
 +
...
 +
...
 +
*/
 +
else if (Map[0][0] == 88 && Map[0][1] == 88 && Map[0][2] == 88){player = 1;You_Won();}
 +
else if (Map[0][0] == 48 && Map[0][1] == 48 && Map[0][2] == 48){player = 2;You_Won();}
 +
/*
 +
...
 +
xxx
 +
...
 +
*/
 +
else if (Map[1][0] == 88 && Map[1][1] == 88 && Map[1][2] == 88){player = 1;You_Won();}
 +
else if (Map[1][0] == 48 && Map[1][1] == 48 && Map[1][2] == 48){player = 2;You_Won();}
 +
/*
 +
...
 +
...
 +
xxx
 +
*/
 +
else if (Map[2][0] == 88 && Map[2][1] == 88 && Map[2][2] == 88){player = 1;You_Won();}
 +
else if (Map[2][0] == 48 && Map[2][1] == 48 && Map[2][2] == 48){player = 2;You_Won();}
 +
/*
 +
x..
 +
.x.
 +
..x
 +
*/
 +
else if (Map[0][0] == 88 && Map[1][1] == 88 && Map[2][2] == 88){player = 1;You_Won();}
 +
else if (Map[0][0] == 48 && Map[1][1] == 48 && Map[2][2] == 48){player = 2;You_Won();}
 +
/*
 +
..x
 +
.x.
 +
x..
 +
*/
 +
else if (Map[0][2] == 88 && Map[1][1] == 88 && Map[2][0] == 88){player = 1;You_Won();}
 +
else if (Map[0][2] == 48 && Map[1][2] == 48 && Map[3][2] == 48){player = 2;You_Won();}
 +
return;
 +
}
 +
 
 +
void Set_Map(unsigned char x, unsigned char y, unsigned char k){Map[x][y] = k;return;}
 +
 
 +
void Enter_Name(){
 +
unsigned char i = 0;
 +
unsigned char k = 0;
 +
    clear_screen();
 +
printf("Player 1 Enter Your Name\n\"*\" To end\nPress A To Select\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
 +
while(i <= 10){
 +
i--;
 +
    if(name1[i] == 42){name1[i] = 0;break;}
 +
i++;
 +
name1[i] = getchar();
 +
printf("Last Character: %c\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", name1[i]);
 +
i++;
 +
}
 +
    printf("\nNow Player 2\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
 +
i = 0;
 +
while(i <= 10){
 +
    i--;
 +
    if(name2[i] == 42){name2[i] = 0;break;}
 +
i++;
 +
name2[i] = getchar();
 +
printf("Last Character: %c\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", name2[i]);
 +
i++;
 +
}
 +
clear_screen();
 +
return;
 +
}
 +
 
 +
void print_Map(){
 +
unsigned char i;
 +
unsigned char k;
 +
unsigned char c;
 +
for (i = 0;i<MAXX;i++){
 +
for (k = 0;k<MAXY;k++){
 +
    c = Map[i][k];
 +
printf("%c", c);
 +
}
 +
}
 +
return;
 +
}
 +
void clear_screen(){unsigned char i = 0;while (i < 18){printf("\n");i++;}return;}
 +
 
 +
int main(){
 +
unsigned char tile_x;
 +
unsigned char tile_y;
 +
player = 1;
 +
title();
 +
Enter_Name();
 +
while(running == 1){
 +
if (player == 1){
 +
start1:
 +
printf("\n%s\nPlease Enter The\nX Cord\n\n\n\n\n\n\n\n\n\n", name1);
 +
while(1){tile_x = getchar();if (tile_x <= 48 || tile_x > 51){printf("\nEnter a number\nbetween 1 and 9\n\n\n\n\n\n\n\n\n\n\n\n");}else{break;}}
 +
tile_x = tile_x - 48;
 +
printf("Please Enter The\nY Cord\n\n\n\n\n\n\n\n\n\n\n");
 +
while(1){tile_y = getchar();if (tile_y <= 48 || tile_y > 51){printf("\nEnter a number\nbetween 1 and 9\n\n\n\n\n\n\n\n\n\n\n\n");}else{break;}}
 +
tile_y = tile_y - 48;
 +
tile_x--;tile_y--;
 +
if (Map[tile_x][tile_y] == 48 || Map[tile_x][tile_y] == 88){goto start1;}
 +
Map[tile_x][tile_y] = 88;//X in ASCII
 +
player = 2;
 +
}
 +
else if (player == 2){
 +
start2:
 +
printf("\n%s\nPlease Enter The\nX Cord\n\n\n\n\n\n\n\n\n\n", name2);
 +
while(1){tile_x = getchar();if (tile_x < 48 || tile_x > 51){printf("\nEnter a number\nbetween 1 and 9\n\n\n\n\n\n\n\n\n\n\n\n");}else{break;}}
 +
tile_x = tile_x - 48;
 +
printf("Please Enter The\nY Cord\n\n\n\n\n\n\n\n\n\n\n");
 +
while(1){tile_y = getchar();if (tile_y < 48 || tile_y > 51){printf("\nEnter a number\nbetween 1 and 9\n\n\n\n\n\n\n\n\n\n\n\n");}else{break;}}
 +
tile_y = tile_y - 48;
 +
tile_x--;tile_y--;
 +
if (Map[tile_x][tile_y] == 48 || Map[tile_x][tile_y] == 88){printf("\nTile Already Taken!\n\n\n\n\n\n\n\n\n\n\n\n");delay(1300);goto start2;}
 +
Map[tile_x][tile_y] = 48;//0 in ASCII
 +
player = 1;
 +
}
 +
    clear_screen();
 +
print_Map();
 +
check_win();//check for 3 in a row
 +
}
 +
 
 +
return 0;
 +
}
 +
</pre>
 +
--[[User:A cat|A cat]] 18:53, 1 August 2014 (UTC)

Revision as of 13:53, 1 August 2014

/*
Tic tac Toe is know 
as noughts and crosses in the uk

feel free to edit the code to
fix bugs or add gamemodes
*/
#include <stdio.h>
#include <gb/gb.h>

#define MAXX 3
#define MAXY 4

unsigned char player;
unsigned char running = 1;
unsigned char name1[10];//player 1's name
unsigned char name2[10]; //player 2's name
unsigned char Map[MAXX][MAXY] = {{46, 46, 46, 10},
						        {46, 46, 46, 10},
						        {46, 46, 46, 10}};// 46 = "." 10 = '\n
void title();
void You_Won();
void clear_screen();
void check_win();//check if a player has won
void print_Map();
void Enter_Name();
void Set_Map(unsigned char x, unsigned char y, unsigned char k);

void title(){
	printf("Noughts and crosses!\n");
	printf("        xoo           \n");
	printf("        oxx           \n");
	printf("        ..x           \n");
	printf("     Press Start      \n");
	waitpad(J_START);
	clear_screen();
	return;
}

void You_Won(){
	clear_screen();
	if (player == 1){
	printf("==================\n");
	printf("=                =\n");
	printf("=                =\n");
	printf("=     %s WINS!!!  \n", name1);
	printf("=    %s LOSES :(  \n", name2);
	printf("=                =\n");
	printf("=                =\n");
	printf("==================\n");
	printf("Press Start to reset!\n");
	waitpad(J_START);
	reset();
	}
	else{
	printf("==================\n");
	printf("=                =\n");
	printf("=                =\n");
	printf("=     %s WINS!!!  \n", name2);
	printf("=    %s LOSES :(  \n", name1);
	printf("=                =\n");
	printf("=                =\n");
	printf("==================\n");
	printf("Press Start to reset\n");
	waitpad(J_START);
	reset();
	}
return;
}

void check_win(){
	/*
	x..
	x..
	x..
	*/
	if (Map[0][0] == 88 && Map[1][0] == 88 && Map[2][0] == 88){player = 1;You_Won();}
	else if (Map[0][0] == 48 && Map[1][0] == 48 && Map[2][0] == 48){player = 2;You_Won();}
	/*
	.x.
	.x.
	.x.
	*/
	else if (Map[0][1] == 88 && Map[1][1] == 88 && Map[2][1] == 88){player = 1;You_Won();}
	else if (Map[0][0] == 48 && Map[1][0] == 48 && Map[2][0] == 48){player = 2;You_Won();}
	/*
	..x
	..x
	..x
	*/
	else if (Map[0][2] == 88 && Map[1][2] == 88 && Map[2][2] == 88){player = 1;You_Won();}
	else if (Map[0][2] == 48 && Map[1][2] == 48 && Map[2][2] == 48){player = 2;You_Won();}
	/*
	xxx
	...
	...
	*/
	else if (Map[0][0] == 88 && Map[0][1] == 88 && Map[0][2] == 88){player = 1;You_Won();}
	else if (Map[0][0] == 48 && Map[0][1] == 48 && Map[0][2] == 48){player = 2;You_Won();}
	/*
	...
	xxx
	...
	*/
	else if (Map[1][0] == 88 && Map[1][1] == 88 && Map[1][2] == 88){player = 1;You_Won();}
	else if (Map[1][0] == 48 && Map[1][1] == 48 && Map[1][2] == 48){player = 2;You_Won();}
	/*
	...
	...
	xxx
	*/
	else if (Map[2][0] == 88 && Map[2][1] == 88 && Map[2][2] == 88){player = 1;You_Won();}
	else if (Map[2][0] == 48 && Map[2][1] == 48 && Map[2][2] == 48){player = 2;You_Won();}
	/*
	x..
	.x.
	..x
	*/
	else if (Map[0][0] == 88 && Map[1][1] == 88 && Map[2][2] == 88){player = 1;You_Won();}
	else if (Map[0][0] == 48 && Map[1][1] == 48 && Map[2][2] == 48){player = 2;You_Won();}
	/*
	..x
	.x.
	x..
	*/
	else if (Map[0][2] == 88 && Map[1][1] == 88 && Map[2][0] == 88){player = 1;You_Won();}
	else if (Map[0][2] == 48 && Map[1][2] == 48 && Map[3][2] == 48){player = 2;You_Won();}
return;
}

void Set_Map(unsigned char x, unsigned char y, unsigned char k){Map[x][y] = k;return;}

void Enter_Name(){
	unsigned char i = 0;
	unsigned char k = 0;
    clear_screen();
	printf("Player 1 Enter Your Name\n\"*\" To end\nPress A To Select\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
	while(i <= 10){
		i--;
	    if(name1[i] == 42){name1[i] = 0;break;}
		i++;
		name1[i] = getchar();
		printf("Last Character: %c\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", name1[i]);
		i++;
	}
    printf("\nNow Player 2\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
	i = 0;
	while(i <= 10){
	    i--;
	    if(name2[i] == 42){name2[i] = 0;break;}
		i++;
		name2[i] = getchar();
printf("Last Character: %c\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", name2[i]);
		i++;
	}
clear_screen();
return;
}

void print_Map(){
	unsigned char i;
	unsigned char k;
	unsigned char c;
	for (i = 0;i<MAXX;i++){
		for (k = 0;k<MAXY;k++){
		    c = Map[i][k];
			printf("%c", c);
		}
	}
return;
}
void clear_screen(){unsigned char i = 0;while (i < 18){printf("\n");i++;}return;}

int main(){
unsigned char tile_x;
unsigned char tile_y;
player = 1;
title();
Enter_Name();
while(running == 1){
	if (player == 1){
	start1:
		printf("\n%s\nPlease Enter The\nX Cord\n\n\n\n\n\n\n\n\n\n", name1);
		while(1){tile_x = getchar();if (tile_x <= 48 || tile_x > 51){printf("\nEnter a number\nbetween 1 and 9\n\n\n\n\n\n\n\n\n\n\n\n");}else{break;}}
		tile_x = tile_x - 48;
		printf("Please Enter The\nY Cord\n\n\n\n\n\n\n\n\n\n\n");
		while(1){tile_y = getchar();if (tile_y <= 48 || tile_y > 51){printf("\nEnter a number\nbetween 1 and 9\n\n\n\n\n\n\n\n\n\n\n\n");}else{break;}}
		tile_y = tile_y - 48;
		tile_x--;tile_y--;
		if (Map[tile_x][tile_y] == 48 || Map[tile_x][tile_y] == 88){goto start1;}
		Map[tile_x][tile_y] = 88;//X in ASCII
		player = 2;
	}
	else if (player == 2){
	start2:
		printf("\n%s\nPlease Enter The\nX Cord\n\n\n\n\n\n\n\n\n\n", name2);
		while(1){tile_x = getchar();if (tile_x < 48 || tile_x > 51){printf("\nEnter a number\nbetween 1 and 9\n\n\n\n\n\n\n\n\n\n\n\n");}else{break;}}
		tile_x = tile_x - 48;
		printf("Please Enter The\nY Cord\n\n\n\n\n\n\n\n\n\n\n");
		while(1){tile_y = getchar();if (tile_y < 48 || tile_y > 51){printf("\nEnter a number\nbetween 1 and 9\n\n\n\n\n\n\n\n\n\n\n\n");}else{break;}}
		tile_y = tile_y - 48;
		tile_x--;tile_y--;
		if (Map[tile_x][tile_y] == 48 || Map[tile_x][tile_y] == 88){printf("\nTile Already Taken!\n\n\n\n\n\n\n\n\n\n\n\n");delay(1300);goto start2;}
		Map[tile_x][tile_y] = 48;//0 in ASCII
		player = 1;
	}
    clear_screen();
	print_Map();
	check_win();//check for 3 in a row
}

return 0;
}

--A cat 18:53, 1 August 2014 (UTC)