当前位置: 首页 > news >正文

青岛网站制作多少钱一个学网站开发跟那个专业最相近

青岛网站制作多少钱一个,学网站开发跟那个专业最相近,开发一个app难吗,工程公司是做什么的实验目的 实现人与人或人与电脑进行五子棋对弈 实验内容 启动游戏#xff0c;显示游戏参数设置界面#xff0c;用户输入参数后进入游戏界面#xff0c;显示棋盘及双方博弈过程#xff0c;游戏过程中可选择退出游戏。判定一方获胜后结束本局游戏#xff0c;可选择继续下…实验目的 实现人与人或人与电脑进行五子棋对弈 实验内容 启动游戏显示游戏参数设置界面用户输入参数后进入游戏界面显示棋盘及双方博弈过程游戏过程中可选择退出游戏。判定一方获胜后结束本局游戏可选择继续下一局或者退出游戏。 分析与设计 设计棋盘使用for循环的嵌套并定义一个二维数组存储棋子 void create_board(char board[N][N] , int n) {for(int i 0;i n;i){for(int j 0;j n;j){cout board[i][j] ;// %c if(j n - 1)cout |;}cout endl;if(i n - 1){for(int j 0;j n;j){cout ---;if(j n - 1)cout |;}}cout endl;} } 下棋下棋是有先后顺序为了保持顺序以及判断是否胜利定义一个game函数来设置下棋流程。下棋者可以是人也可以是电脑先对人下棋设置一个函数play_game和play_game_2来定义双方下棋的位置与不同棋子 //玩家下棋 bool play_game(char board[N][N] , int n) {int x,y;cout 请玩家1下棋- endl;while(1){cin x y;if(x 0 x n y 0 y n){if(board[x][y] ){board[x][y] *;return check_game(board,n);break;}elsecout 该点已经下过请您重新下谢谢 endl;}else{cout 坐标越界请重新输入 endl;} } } bool play_game_2(char board[N][N] , int n) {int x,y;cout 请玩家2下棋- endl;while(1){cin x y;if(x 0 x n y 0 y n){if(board[x][y] ){board[x][y] #;return check_game(board,n);break;}elsecout 该点已经下过请您重新下谢谢 endl;}else{cout 坐标越界请重新输入 endl;} } } 而电脑下棋就定义一个种子srand使电脑随机性下棋。 //电脑下棋 bool computer_game(char board[N][N],int n) {srand((unsigned int)time(NULL)); //设置随机生成的数字cout 电脑1下棋-;int x,y;while(1){x rand() % n;y rand() % n;if(board[x][y] ){board[x][y] #;cout x , y endl;return check_game(board,n);break;} } } 判断胜利五子棋胜利条件是五个子横着竖着斜着相连这个时候就要判断其连通性判断连通性最好办法就是使用DFS首先利用两个for循环嵌套遍历当前board数组随后对四个可能的联通方向通过DFS递归探索如果五子确实相连这个时候返回true不相连则返回false。 //判断是否胜利 int dx[N] { 1, 1, 0, 1 }; int dy[N] { 0, 1, 1,-1 }; //判断直线是否能走 bool dfs(int x,int y,char a,int i,int res) {if(board[x][y] ! a)//五个子不全连return false;else if(res 5) return true; //五个子全连return dfs(x dx[i], y dy[i],a,i,res1); } //遍历四种途径 bool check(char board[N][N],int x,int y) { for(int i 0;i 3;i)//四种胜利的路径判断一遍{if(dfs(x,y,board[x][y],i,1) true){return true;}}return false; } bool check_game(char board[N][N],int n) {for(int i 0;i n;i){for(int j 0;j n;j){if(board[i][j] ! )if(check(board,i,j) true)return true;}}return false; } 最后主函数利用while循环的嵌套判断玩家选择方式如果其输入错误的数字那么就会循环直到输入正确。 另外这里也需要判断是否棋盘全满 //判断棋盘是否填满 bool is_full(char board[N][N],int n) {for(int i 0;i n;i){for(int j 0;j n;j){if(board[i][j] ){return false;}}}return true; } 完整代码如下 #include iostream #include time.h using namespace std; const int N 100; char board[N][N]; void menu() {cout ******************************* endl;cout ************menu*************** endl;cout **(请输入对应的数字进行选择)*** endl;cout *********1.玩家对弈************ endl;cout *********2.电脑下棋************ endl;cout *********3.结束游戏************ endl;cout ******************************* endl;cout ******************************* endl;} void choose() {cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout ******请玩家输入棋盘大小******* endl;cout *********(注:6-100)************ endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl; } void win_1() {cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout ********恭喜玩家1胜利********** endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl; } void win_2() {cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout ********恭喜玩家2胜利********** endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl; } void win_computer() {cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout ***********电脑胜利************ endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl; } void choose_3() {cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout *************BYE*************** endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl; } void end() {cout ******************************* endl;cout ******************************* endl;cout *******是否重新开始游戏******** endl;cout *********1.continue************ endl;cout ***********2.end*************** endl;cout ******************************* endl;cout ******************************* endl;cout ******************************* endl; } //初始化棋盘 void error_board(char board[N][N] , int n) {for(int i 0;i n;i){for(int j 0;j n;j){board[i][j] ;}} } //创建棋盘 void create_board(char board[N][N] , int n) {for(int i 0;i n;i){for(int j 0;j n;j){cout board[i][j] ;// %c if(j n - 1)cout |;}cout endl;if(i n - 1){for(int j 0;j n;j){cout ---;if(j n - 1)cout |;}}cout endl;} }//判断是否胜利 int dx[N] { 1, 1, 0, 1 }; int dy[N] { 0, 1, 1,-1 }; //判断直线是否能走 bool dfs(int x,int y,char a,int i,int res) {if(board[x][y] ! a)//五个子不全连return false;else if(res 5) return true; //五个子全连return dfs(x dx[i], y dy[i],a,i,res1); } //遍历四种途径 bool check(char board[N][N],int x,int y) { for(int i 0;i 3;i)//四种胜利的路径判断一遍{if(dfs(x,y,board[x][y],i,1) true){return true;}}return false; } bool check_game(char board[N][N],int n) {for(int i 0;i n;i){for(int j 0;j n;j){if(board[i][j] ! )if(check(board,i,j) true)return true;}}return false; } //玩家下棋 bool play_game(char board[N][N] , int n) {int x,y;cout 请玩家1下棋- endl;while(1){cin x y;if(x 0 x n y 0 y n){if(board[x][y] ){board[x][y] *;return check_game(board,n);break;}elsecout 该点已经下过请您重新下谢谢 endl;}else{cout 坐标越界请重新输入 endl;} } } bool play_game_2(char board[N][N] , int n) {int x,y;cout 请玩家2下棋- endl;while(1){cin x y;if(x 0 x n y 0 y n){if(board[x][y] ){board[x][y] #;return check_game(board,n);break;}elsecout 该点已经下过请您重新下谢谢 endl;}else{cout 坐标越界请重新输入 endl;} } } //电脑下棋 bool computer_game(char board[N][N],int n) {srand((unsigned int)time(NULL)); //设置随机生成的数字cout 电脑1下棋-;int x,y;while(1){x rand() % n;y rand() % n;if(board[x][y] ){board[x][y] #;cout x , y endl;return check_game(board,n);break;} } } //判断棋盘是否填满 bool is_full(char board[N][N],int n) {for(int i 0;i n;i){for(int j 0;j n;j){if(board[i][j] ){return false;}}}return true; } void game_1(char board[N][N] , int n) {bool res false;//初始化棋盘error_board(board,n);//初始化create_board(board,n);//打印棋盘//下棋while(1){res play_game(board,n);//玩家下棋create_board(board,n);//打印棋盘if(res true){create_board(board,n);win_1();break; } res play_game_2(board,n);//电脑下棋create_board(board,n);//打印棋盘if(res true){create_board(board,n);win_2();break;}else if(is_full(board,n)){cout 棋盘已经被填满本局平局 endl;break;}} } //游戏流程循环 void game_2(char board[N][N] , int n) {bool res false;//初始化棋盘error_board(board,n);//初始化create_board(board,n);//打印棋盘//下棋while(1){cout 请在0-n之间输入数据 endl;res play_game(board,n);//玩家下棋create_board(board,n);//打印棋盘if(res true){create_board(board,n);win_1();break; } res computer_game(board,n);//电脑下棋create_board(board,n);//打印棋盘if(res true){create_board(board,n);win_computer();break;}else if(is_full(board,n)){cout 棋盘已经被填满本局平局 endl;break;}} } int main() {menu();while(1){int a;int res;cin a;//输入模式if(a 1)//玩家对弈{while(1){choose();int n;cin n;if(n 6 || n 100){cout 请重新输入棋盘大小 endl;}else{game_1(board,n);end();int res;cin res;if(res 2)break;} } if(res 2){choose_3();break;}}else if(a 2)//电脑对弈{while(1){choose();int n;cin n;if(n 6 || n 100){cout 请重新输入棋盘大小 endl;}else{game_2(board,n);end();cin res;if(res 2)break; } } if(res 2){choose_3();break;}}else if(a 3)//退出{choose_3();break;}else {cout 不满足请重新输入 endl;}}return 0; } 运行结果 结果分析与结论 这套程序有很多不足的地方 棋盘的画法不够美观可以利用Turbo c的图形库画图电脑下棋不够难度随机性强可以通过DFS判断当连通性为3的情况进行补位判断胜利不够高效时间复杂度很高n^2的递归暴搜非常慢 可以适当的利用graphics.h以及conio.h头文件画图并加入一些更为高效的算法优化判断
http://www.dnsts.com.cn/news/100957.html

相关文章:

  • 徐州网站制作怎样wordpress如何显示分类目录
  • 电子商务网站建设和推广 范文学怎么做建筑标书哪个网站
  • 辽阳网站推广百度网站大全
  • 做网站如何不被忽悠做自己的网站要多少钱
  • 住房和城乡建设部网站职责wordpress 安装后空白
  • 专业做网站app的公司哪家好wordpress设置首页文章
  • 手机端网站做app怀化市建设局网站
  • h5网站搭建大型网站建设需要
  • 乐陵seo排名雄安做网站优化的公司
  • 网站建设演讲稿做ar的网站
  • 网站设计培训学校重庆网站建设夹夹虫公司
  • 云建站自动建站系统源码长春自助建站系统
  • 小广告推广网站正在为您跳转中
  • 免费企业网站建设word柯桥做网站
  • 如何选择营销网站建设wordpress怎样改头像
  • 网站设网页设计百度站长工具网址
  • 有效果的网站排名宁波seo公司联系方式
  • 外国人讲汉语做网站的视频深圳比较好的设计网站公司吗
  • 给视频做特效的网站在哪个公司建设网站好
  • 网站设计标题wordpress后台加统计代码
  • 门户网站开发使用什么语言免费代理网页
  • 高水平的郑州网站建设个人网站 外贸
  • 网站模版 源码之家在线查企业
  • 榆林医疗网站建设建设网上购物网站
  • 极简资讯网站开发电子商务网站建设需要的语言
  • 网站制作不用备案万网怎么做网站
  • 青岛网站建设技术外包网站开发 经常要清理缓存
  • 网站性能优化网站在线演示
  • 网站服务器租用价格表ps网页版在线使用最全版
  • 织梦网站标题被篡改湖南长沙市区哪里好玩