TicTacToe

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)

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
 
eine Bild-Datei vorzugaugeln war keine gute Idee.... hast du mal versucht, deinen Anhang herunterzuladen? nicht anklickbar...

zip und rar sind erlaubt, pack's doch einfach in eins dieser Formate.
 
WENN es funktionieren würde....

aber das Script attachment.php versucht ja, die Datei als Bild auszugeben und setzt da nen JPEG-Header dran... da es dann aber kein gültiges Bild ist, lässt es sich weder mit IE noch mit Firefox einfach so speichern.

Erst mit Firefox-Plugin DownThemAll! hab ich's hinbekommen und das hat sicher nicht jeder drauf....

daher hier ein re-up als zip:
 
Zurück
Oben