linux五子棋功能,五子棋(linux的shell坏境)

2023-10-30 15:59

本文主要是介绍linux五子棋功能,五子棋(linux的shell坏境),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

闲着无聊搞个在shell环境下的五子棋玩玩

1.[代码]fivechess.cc

#include"fivechess.h"

#include

#include

#include

using namespace std;

Chess::Chess()

{

}

Chess::~Chess()

{

}

void Chess::init()//initial the chess board

{

for(int i=0;i

{

for(int j=0;j

{

chessBoard[i][j]='+';

}

puts("");

}

pointer=chessBoard;

system("clear");

printf("The game begin:\n");

}

int Chess::play(int player)

{

printf("Please put the position on the chess board,example(3 3):");

int row,col;

bool win;

cin>>row>>col;

while(!cin.good())

{

printf("The put is wrong,Please enter again:");

cin.clear();

while(cin.get()!='\n')continue;

cin>>row>>col;

}

if((row<=7&&row>=0)&&(col<=7&&row>=0))

{

if(1==player)

{

if(chessBoard[row][col]=='#'||chessBoard[row][col]=='@')

{

printf("Not legal,there is a pawm!");

play(player);

}

else

{

chessBoard[row][col]='#';

}

win=test(row,col,player);

if(win)

{

printf("Player %d,you win!Congratulations!!!\n",player);

dis();

return 1;

}

}

if(2==player)

{

if(chessBoard[row][col]=='@'||chessBoard[row][col]=='#')

{

printf("Not legal,there is a pawm!");

play(player);

}

else

{

chessBoard[row][col]='@';

}

win=test(row,col,player);

if(win)

{

printf("\nPlayer %d,you win!Congratulations!!!\n",player);

dis();

return 2;

}

}

}

else

{

printf("The position is not legal,Please put it again!");

play(player);

}

return 0;

}

void Chess::run()

{

while(true)

{

printf("The player 1 to put,");

if(1==play(1))return;

system("clear");

dis();

printf("The player 2 to put,");

if(2==play(2))return;

system("clear");

dis();

}

return;

}

void Chess::dis()//show the chess board

{

for(int i=0;i

{

for(int j=0;j

{

printf("%2c",pointer[i][j]);

}

puts("");

}

}

bool Chess::test(int row,int col ,int player)

{

char tmp;

if(1==player)tmp='#';

if(2==player)tmp='@';

//----------------------------------

int cnt=0;

for(int i=row-1;i>=0;i--)

{

if(chessBoard[i][col]!=tmp)break;

if(chessBoard[i][col]==tmp)cnt++;

if(4==cnt)return true;

}

for(int i=row+1;i

{

if(chessBoard[i][col]!=tmp)break;

if(chessBoard[i][col]==tmp)cnt++;

if(4==cnt)return true;

}

//----------------------------------

cnt=0;

for(int j=col-1;j>=0;j--)

{

if(chessBoard[row][j]!=tmp)break;

if(chessBoard[row][j]==tmp)cnt++;

if(4==cnt)return true;

}

for(int j=col+1;j

{

if(chessBoard[row][j]!=tmp)break;

if(chessBoard[row][j]==tmp)cnt++;

if(4==cnt)return true;

}

//----------------------------------

cnt=0;

for(int i=row-1,j=col-1;i>=0&&j>=0;i--,j--)

{

if(chessBoard[i][j]!=tmp)break;

if(chessBoard[i][j]==tmp)cnt++;

if(4==cnt)return true;

}

for(int i=row+1,j=col+1;i

{

if(chessBoard[i][j]!=tmp)break;

if(chessBoard[i][j]==tmp)cnt++;

if(4==cnt)return true;

}

cnt=0;

for(int i=row-1,j=col+1;i>=0&&j

{

if(chessBoard[i][j]!=tmp)break;

if(chessBoard[i][j]==tmp)cnt++;

if(4==cnt)return true;

}

for(int i=row+1,j=col-1;i=0;i++,j--)

{

if(chessBoard[i][j]!=tmp)break;

if(chessBoard[i][j]==tmp)cnt++;

if(4==cnt)return true;

}

return false;

}

2.[代码]fivechess.h

#ifndef _FIVECHESS_

#define _FIVECHESS_

#define N 8

typedef char chessP[N];

class Chess

{

private:

char chessBoard[N][N];

chessP* pointer;

public:

void init();

void dis();

int play(int player);

bool test(int row,int col,int player);

void run();

public:

Chess();

~Chess();

};

#endif

3.[代码]main.cc

#include

#include"fivechess.h"

int main()

{

Chess* c=new Chess;

c->init();

c->dis();

c->run();

return 0;

}

4.[图片] 2015-10-05 12:57:37屏幕截图.png

05130716_8rLU.png

这篇关于linux五子棋功能,五子棋(linux的shell坏境)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/309016

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优