双人五子棋游戏用C++实现

本文介绍了如何使用C++实现一个双人五子棋游戏。通过创建二维数组作为棋盘,交替判断玩家下棋,检查下子位置合法性,并判断是否存在连成5子的获胜情况。详细讨论了游戏的逻辑和实现细节。
摘要由CSDN通过智能技术生成

双人五子棋游戏的实现(C++)

在这里插入图片描述
在这里插入图片描述

实现思路:
用二维数组创建一个棋盘
比较轮到哪个玩家下棋
判断下子位置是否已经有棋子,有棋子的话就重下该子
判断竖直,水平,左斜,右斜是否有连成5个子的情况
(右斜左上方子的范围是水平1~16竖直1~16,左斜右上方子范围是水平5~20,竖直5~20)

#include <iostream>
#include <algorithm>
using namespace std;

int turn=1;
char qipan[23][23];
char exchange;
int calsym=0;
char x_axis,y_axis;
int xs,ys;
int calculate(int pin){
   //比较棋子是否连成5个
for(int a=1;a<=20;a++){
   
	for(int b=1;b<=16;b++){
   
		if(qipan[b][a]==qipan[b+1][a]&&qipan[b+1][a]==qipan[b+2][a]&&qipan[b+2][a]==qipan[b+3][a]&&qipan[b+3][a]==qipan[b+4][a]&&qipan[b][a]!='+'){
   //水平比较 
		for(int i=0;i<=20;i++){
   //列 
	for(int j=0;j<=20;j++){
   //行 
		cout<<qipan[j][i]<<" ";
	}
	cout<<endl;
}
		if(pin){
   
			cout<<"\nA胜利了\n";
			system("pause");
			
		} 
		else{
   
			cout<<"\nB胜利了\n"; 
			system("pause");
		}
		}
		else{
   
			if(qipan[a]<
c++编写的五子棋游戏 // Five.cpp: implementation of the CFive class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "gobang.h" #include "Five.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif BOOL debugqian = false; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CFive::CFive() { } CFive::~CFive() { } BOOL CFive::has_five(int color) { //color = 1表示黑子,color = 2表示白子 //判断是否出现了5个子想连的情况 int m,n,i,j; for(m=1;m<16;m++) for(n=1;n<16;n++) { if(points[m][n]==color) { int p=1,s=1,zx=1,yx=1; for( i=1;i<5;i++) {if(n-i>=0&&points[m][n-i]==color) p++; else break; } for( i=1;i<5;i++) { if(n+i<16&&points[m][n+i]==color) p++; else break; } for( i=1;i<5;i++) { if(m-i>=0&&points[m-i][n]==color) s++; else break; } for( i=1;i<5;i++) { if(m+i<16&&points[m+i][n]==color) s++; else break; } for( i=1;i<5;i++) { if(m-i>=0&&n+i<16&&points[m-i][n+i]==color) zx++; else break; } for( i=1;i<5;i++) { if(n-i>=0&&m+i<16&&points[m+i][n-i]==color) zx++; else break; } for( i=1;i<5;i++) { if(m-i>=0&&n-i>=0&&points[m-i][n-i]==color) yx++; else break; } for( i=1;i<5;i++) { if(m+i<16&&n+i<16&&points[m+i][n+i]==color) yx++; else break; } if(p>=5||s>=5||zx>=5||yx>=5) return true; } } return false; } void CFive::Clear() { int i,j; for(i=1;i<=15;i++) for(j=1;j<=15;j++) { points[i][j] = 0;//先清空 } }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值