Servus
Ich wollte euch mal mein kleines TicTacToe-Spiel zeigen und wissen, was ihr davon haltet?
Sprache ist C. Sources sind nochmal gepackt angehängt(ist tar.bz2 nicht jpg -> dateiendungsfilter)
Ich wollte euch mal mein kleines TicTacToe-Spiel zeigen und wissen, was ihr davon haltet?
Sprache ist C. Sources sind nochmal gepackt angehängt(ist tar.bz2 nicht jpg -> dateiendungsfilter)
Code:
/*
* main.c
*
* Created on: 15.01.2009
* Author: mrspider
*/
#include "tttmodel.h"
#include "tttout.h"
int main(void) {
gamefield field;
status winner = EMPTY;
u_char count = 0;
initField(&field);
printf("Welcome to TicTacToe!\n");
printField(&field);
while (winner == EMPTY) {
insert(&field, askNumber((count % 2 == 0) ? X : O), (count % 2 == 0) ? X : O);
winner = checkWin(&field);
if (winner != EMPTY) {
printf("%c has won the game!", winner);
break;
}
printField(&field);
count++;
}
return 0;
}
Code:
/*
* tttmodel.h
*
* Created on: 16.01.2009
* Author: mrspider
*/
#ifndef TTTMODEL_H_
#define TTTMODEL_H_
typedef enum {
EMPTY = ' ', X = 'X', O = 'O'
} status;
typedef unsigned char u_char;
typedef status* row[3];
typedef status gamefield[9];
void initField(gamefield *field);
void insert(gamefield *field, u_char number, status newState);
status checkWin(gamefield *field);
#endif /* TTTMODEL_H_ */
Code:
/*
* tttmodell.c
*
* Created on: 15.01.2009
* Author: mrspider
*/
#include "tttmodel.h"
u_char rowdef[8][3] = {
{1,2,3},
{4,5,6},
{7,8,9},
{1,4,7},
{2,5,8},
{3,6,9},
{1,5,9},
{3,5,7},
};
void initField(gamefield *field){
int i;
for (i = 0; i < 9; i++) {
*field[i] = EMPTY;
}
}
/*
* Number between 0 and 8!!
*/
void insert(gamefield *field, u_char number, status newState) {
if (*field[number] == EMPTY) {
*field[number] = newState;
}
}
status checkWin(gamefield *field) {
int i;
for (i = 0; i < 8; i++) {
if(*field[rowdef[i][0] - 1] == *field[rowdef[i][1] - 1] && *field[rowdef[i][1] - 1] == *field[rowdef[i][2] - 1] ){
return *field[rowdef[i][0] - 1];
}
}
return EMPTY;
}
//void makeRows(gamefield *field, row *rows[]) {
// int i;
// for (i = 0; i < 8; i++) {
// *rows[i][0] = field[rowdef[i][0]];
// *rows[i][1] = field[rowdef[i][1]];
// *rows[i][2] = field[rowdef[i][2]];
// }
//}
Code:
/*
* tttout.h
*
* Created on: 16.01.2009
* Author: mrspider
*/
#ifndef TTTOUT_H_
#define TTTOUT_H_
#include <stdio.h>
#include "tttmodel.h"
u_char askNumber(status current);
void printField(gamefield *field);
#endif /* TTTOUT_H_ */
Code:
#ifndef _TTTOUT_C_
#define _TTTOUT_C_
/*
* tttout.c
*
* Created on: 15.01.2009
* Author: mrspider
*/
#include "tttout.h"
u_char askNumber(status current) {
unsigned int numb;
do{
printf("It's %c's turn: ",current);
char c = getchar();
numb = ((int) c)-48;
}while(!(numb > 0 && numb < 10));
return (u_char)numb-1;
}
void printField(gamefield *field) {
printf("%c|%c|%c\n"
"-+-+-\n"
"%c|%c|%c\n"
"-+-+-\n"
"%c|%c|%c\n",*field[0],*field[1],*field[2]
,*field[3],*field[4],*field[5]
,*field[6],*field[7],*field[8]);
}
#endif