Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX_NAME_LEN 32
- void show_array(int (*)[3]);
- void insert_xo(int (*)[3], int, int);
- int check_win(int (*)[3]);
- void get_players_name(char (*)[MAX_NAME_LEN+1]);
- void init_array(int (*)[3]);
- int get_player_move();
- main(){
- char name[2][MAX_NAME_LEN+1];
- int array[3][3], player_id=0;
- init_array(array);
- get_players_name(name);
- do{
- system("clear");
- printf("%sIt's your turn!\n", name[player_id]);
- show_array(array);
- insert_xo(array, get_player_move(), player_id);
- player_id^=1; /* change player */
- }while((check_win(array))==0);
- system("clear");
- printf("%s won!\n", name[player_id^1]);
- show_array(array);
- return 0;
- }
- void get_players_name(char (*namePtr)[MAX_NAME_LEN+1]){
- puts("Hi player 1, what's your name?");
- fgets(namePtr[0], MAX_NAME_LEN, stdin);
- system("clear");
- puts("Hi player 2, what's your name?");
- fgets(namePtr[1], MAX_NAME_LEN, stdin);
- }
- void init_array(int (*arrayPtr)[3]){
- int i, j;
- for(i=0;i<3;i++)
- for(j=0;j<3;j++)
- arrayPtr[i][j]=-99;
- }
- void show_array(int (*arrayPtr)[3]){
- int i, j;
- for(i=0;i<3;i++){
- printf("|");
- for(j=0;j<3;j++)
- if(arrayPtr[i][j]<0)
- printf("%d|", 1+j+3*i);
- else if(arrayPtr[i][j]==0)
- printf("O|");
- else if(arrayPtr[i][j]==1)
- printf("X|");
- puts("");
- }
- }
- int check_win(int (*arrayPtr)[3]){
- int check_rows(int (*)[3]);
- int check_columns(int (*)[3]);
- int check_diags(int (*)[3]);
- return (check_rows(arrayPtr)+check_columns(arrayPtr)+check_diags(arrayPtr));
- }
- int check_rows(int (*arrayPtr)[3]){
- int i, j, flag=0;
- for(i=0;i<3;i++)
- for(j=0;j<2;j++)
- if((arrayPtr[i][0]+arrayPtr[i][1]+arrayPtr[i][2])==(3*j))
- flag++;
- return flag;
- }
- int check_columns(int (*arrayPtr)[3]){
- int i, j, flag=0;
- for(i=0;i<3;i++)
- for(j=0;j<2;j++)
- if((arrayPtr[0][i]+arrayPtr[1][i]+arrayPtr[2][i])==(3*j))
- flag++;
- return flag;
- }
- int check_diags(int (*arrayPtr)[3]){
- int i, j, flag=0;
- for(j=0;j<2;j++)
- if((arrayPtr[0][0]+arrayPtr[1][1]+arrayPtr[2][2])==(3*j))
- flag++;
- else if((arrayPtr[2][0]+arrayPtr[1][1]+arrayPtr[2][0])==(3*j))
- flag++;
- return flag;
- }
- void insert_xo(int (*arrayPtr)[3], int n, int id_player){
- int r=0, c=n;
- while( n>3 ){
- r++;
- n-=3;
- }
- c-=3*r+1;
- arrayPtr[r][c]=id_player;
- }
- int get_player_move(){
- int n;
- do{
- scanf("%d", &n);
- if(n<0||n>9)
- puts("You have to insert a number in the 1-9 range");
- }while(n<0||n>9);
- return n;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement