程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++井字棋游戲,DOS界面版

C++井字棋游戲,DOS界面版

編輯:C++入門知識

據說有一個能保證不敗的算法,明天看看先再寫個PVC版的。

正題,今天無聊寫了個井字棋游戲,順便逐漸讓自己習慣良好的代碼風格,放上來給新手學習學習。

jzq2.cpp

/*
	N字棋游戲PVP版,DOS版
	本棋盤可擴充,只需調整檢測條件即可,其他接口不需改變。
	非人機對戰型,PVP類型;
	@author:天下無雙
	@date:2014-5-25
	@version:1.0
*/
#include 
#include 
#define INVALIDINDEX -1
#define FULL -2
#define OK 0
#define WIN 1
#define ISIN -3
using namespace std;
struct box{ //用box代表棋盤上每一個格子
	int chess;//用一種顏色代表棋子,black和white
	int status;//0代表該格子沒有棋子,1代表已經有了棋子
};
enum COLOR{black,white};
class chessBoard
{
private:
		
		static const int MAXROW=10;
		static const int MAXCOLUMN=10;
		int row;
		int column;
		int blackBox;//剩余棋盤格子數,即可落棋點
		box arr[MAXROW][MAXCOLUMN];
		void setRow(int r){row=r;};
		void setCol(int c){column=c;};
		int GetRow()const{return row;};
		int GetCol()const{return column;};
public:
		chessBoard(int r,int col){
		if(r>MAXROW||col>MAXCOLUMN){
			cerr<<"棋盤大小超出范圍"<=r||j>=col)
			return INVALIDINDEX;
		//if(c!=black&&c!=white)
			//return INVALIDINDEX;
		if(arr[i][j].status==0){//將棋子落入棋盤
			arr[i][j].chess=c;
			arr[i][j].status=1;//標識此格
			flush();//刷新
			blackBox--;
			if(isGameOver())
				return WIN; 
			if(isFull())
				return FULL;
			return OK;
		}
		return ISIN;
	}	

protected:
		void creat(){//初始化棋盤
			int r=chessBoard::GetRow();
			int col=chessBoard::GetCol();
			for(int i=0;i=0&&jmain.cpp

#include 
#include "jzq2.cpp"
using namespace std;
int main()
{	
	//3,3代表棋盤為3*3,並且是指三個一排即為勝利
	//同樣的,5,5代表5字棋,但是棋盤大小也是5*5
	//擴展棋盤將在下一版本推出
	chessBoard cb(3,3);
	int status;
	COLOR c=black;//記錄下一步輪到誰走
	int x,y;
	bool falg=false;//用於記錄是否成功落棋
	bool isExit=false;//用於記錄游戲是否結束
	while(!isExit)
	{
		cout<<"\n\"0\"代表white,\"*\"代表black"<>x>>y;
		/*
		if(falg)
			c=c==black?white:black;//換人走
			*/
		status=cb.insertChess(x,y,c);
		switch(status){
	//超出范圍,返回 INVALIDINDEX -1
	//已經贏了,返回 WIN 1
	//棋盤滿了,返回 FULL -2
	//正常落棋  返回 OK 0
		case 0:falg=true;
				c=c==black?white:black;//如果成功落棋,換人走下一步棋
				break;
		case -1:cout<<"\n\n輸入坐標不對,超出范圍"<
已經測試過了3*3的無BUG,當然前提是你輸入的是數字。你要是輸入字母的話,果斷崩!

先放到PVP的來玩玩,哈哈哈。

今天跑去多益網絡機試,回來的途中居然想起來最後一道題少寫了一個判斷,郁悶。

還有一道回來的途中才大概想了出來。

郁悶ing......

好了,睡了,各位晚安。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved