C++ X子棋v2.0 改版代码

这篇博客介绍了C++实现的X子棋新版代码,针对旧版的不简便和界面不美观进行了改进,实现了鼠标点击操作并提高了界面美观度。代码经过多次调试,解决了旧版的鼠标点击不灵敏问题。文章详细讲解了头文件、宏定义、变量、主函数、初始化、放置棋子和判断赢棋的函数。
摘要由CSDN通过智能技术生成

目录

代码

        头文件、宏定义和变量

        main()

        init()

        put(int)

        win()

总结

我上次发了一篇X子棋的旧版代码详解,也尽量详细地阐述了一些新旧版本的优缺点。

所以今天就应我上次的话,编写一个全新(鼠标点击版)的X子棋代码。

这次的X子棋代码也几乎改进了旧版的任何缺点(不简便和界面不美观),也的确达到了上篇博客所说的优点(简便和界面美观)。

我在Dev-c++调试运行了五六次,都没有出现上篇博客所述的鼠标点击不灵敏的缺点。所以X子棋的新版几乎是没有问题的。

规则没有任何变化,思路可以参照旧版博客的说法。只不过这次使用的变量名有改动而已:

rc改成n,n改成sm,bw改成cur,drx[]和dry[]改成dx[]和dy[]。

代码

        头文件、宏定义和变量

                上述5个变量(数组)的改变参见如下代码块:

#include<bits/stdc++.h>
#include<windows.h>
#define L ((GetAsyncKeyState(VK_LBUTTON)&0x8000)?true:false)//左键 
#define SCM GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),&mode);mode&=~ENABLE_QUICK_EDIT_MODE;SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),mode);
using namespace std;
DWORD mode;
POINT p;
CONSOLE_FONT_INFO font;
int a[21][21],g[21][3],n,sm,cur,x,y,w,t;
int dx[]={0,-1,-1,-1,0,0,1,1,1},dy[]={0,-1,0,1,-1,1,-1,0,1};//八方向数组
bool chk;

        main()

                其实我在主函数做了一个"X-in-a-row"的特效,只是放在init()函数体中了:

int main(){
	init();
	do{
		put(0);
		SCM
		do{
			while(!L);
			GetCursorPos(&p);
			ScreenToClient(GetForegroundWindow(),&p);               
			GetCurrentConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),FALSE,&font); 
			x=(p.y/=font.dwFontSize.Y)+1;//获取鼠标点击行
			y=(p.x/=font.dwFontSize.X)+1;//获取鼠标点击列
			Sleep(50);
		}while(x>n || y>n*2 || a[x][y=(y%2?(y+1)/2:y/2)]);//不合法
		a[x][y]=cur;
		cur=
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值