c语言数字拼图游戏代码
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<windows.h>
int i, j, r, k; //i、j、r用于循环, k存放随机数值
int m, n; // m、n是当前空位的下标
int a[4][4]; //存储4×4共16个数字的数组
void show(void); //输出界面
void csh(void); //初始化界面
int yes(void); //判断排序是否成功(1是0否)
void up(void); //数字向上移动到空位(空位则下移)
void down(void); //数字向下移
void left(void); //数字向左移
void rght(void); //数字向右移
void inkey(void); //按键操作
void gtxy(int x, int y) ; //控制光标位置的函数
int main(void)
{ while(1)
{ csh( );while(1){ inkey();show();if ( yes( ) ){ gtxy(6,12); printf("你成功了! 再来一局y/n?"); break; }}if(getch( )=='n')break;}
return 0;
}
void csh(void) //初始化
{ r=0;
CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下两行是隐藏光标的设置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
for(i=0;i<4;i++) //给数组a依序赋值
for(j=0;j<4;j++){ if (i==3 && j==3) a[i][j]=0;else a[i][j]=1+r++;}
m=3; n=3; //记下空格(值为0)的下标
down( ); rght( ); rght( ); down( ); //预演4步
srand((unsigned)time(0)); //初始化随机数发生器
for(r=0;r<500;r++) //将数组各值打乱
{ k=rand( )%(4);switch(k){ case 0: { up( ); break; }case 1: {down( ); break; }case 2: { left( ); break; }case 3: { rght( ); break; }}
}
system(“cls”);
printf("\n\n\t\t 数字拼图");
printf("\n\t┌──────┬──────┬──────┬──────┐");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t└──────┴──────┴──────┴──────┘");
show( );
}
void show(void) //输出界面
{ for(i=0;i<4;i++)
for(j=0;j<4;j++) //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字{ gtxy(7*j+9,2*i+4); if(a[i][j]==0)printf(" │");else if(a[i][j]>9)printf(" %d │",a[i][j]);else printf(" %d │",a[i][j]);}
}
void inkey(void) //按键操作
{ int key;
key=getch( );
switch(key)
{ case 72: { up( ); break; }case 80: {down( ); break; }case 75: {left( ); break; }case 77: { rght( ); break; }}
}
void up(void) //向上移动
{ if (m!=3) //空位不得在下边界
{ a[m][n]=a[m+1][n]; m++; a[m][n]=0; }
}
void down(void) //向下移动
{ if (m!=0) //空位不得在上边界
{ a[m][n]=a[m-1][n]; m--; a[m][n]=0; }
}
void left(void) //向左移动
{ if (n!=3) //空位不得在右边界
{ a[m][n]=a[m][n+1]; n++; a[m][n]=0; }
}
void rght(void) //向右移动
{ if (n!=0) //空位不得在左边界
{ a[m][n]=a[m][n-1]; n--; a[m][n]=0; }
}
int yes(void) //判断是否成功
{ r=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ if (a[i][j]!=1+r++) return (r==16)?1:0; }
}
void gtxy(int x, int y) //控制光标位置的函数
{ COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
c语言数字拼图游戏代码相关推荐
- python拼图游戏代码的理解_Python编写的数字拼图游戏(含爬山算法人机对战功能)...
数字拼图游戏与拼图游戏原理一致,把打乱了的数字或图片经移动,拼成给定的目标数字或图片,其中总有一个空的地方,让相邻(上下左右)的方块移动,直至达到目标. 游戏代码由浙江温州永嘉县教师发展中心应根球老师 ...
- html九图拼图游戏代码,基于Vue.js实现数字拼图游戏
先来看看效果图: 功能分析 当然玩归玩,作为一名Vue爱好者,我们理应深入游戏内部,一探代码的实现.接下来我们就先来分析一下要完成这样的一个游戏,主要需要实现哪些功能.下面我就直接将此实例的功能点罗列 ...
- python拼图游戏代码的理解_有意思的JS(1)拼图游戏 玩法介绍及其代码实现
我是你们的索儿呀,很幸运我的文章能与你相见,愿萌新能直观的感受到Javascript的趣味性,愿有一定基础者有所收获,愿大佬不吝赐教 拼图游戏是一张图片分为若干块,打乱次序,将其中一块变为空白块,其只 ...
- Python编写的数字拼图游戏(含爬山算法人机对战功能)
数字拼图游戏与拼图游戏原理一致,把打乱了的数字或图片经移动,拼成给定的目标数字或图片,其中总有一个空的地方,让相邻(上下左右)的方块移动,直至达到目标. 游戏代码由浙江温州永嘉县教师发展中心应根球老师 ...
- Python Tkinter——数字拼图游戏
Python Tkinter 实践系列--数字拼图游戏 tkinter模块,掌握窗口创建.消息循环等tkinter的基本架构 读取并显示图片,处理键盘事件 导入random库,导入python中的tk ...
- C语言贪吃蛇游戏代码,贪吃蛇C语言代码实现大全
一.C语言贪吃蛇代码实现前言 设计贪吃蛇游戏的主要目的是让大家夯实C语言基础,训练编程思维,培养解决问题的思路,领略多姿多彩的C语言. 贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏, ...
- C语言数组制作拼图游戏,C语言自制拼图游戏.doc
C语言自制拼图游戏 C语言~~自制-拼图游戏 原帖及讨论:/thread-233257-1-1.html //编译环境VC++6.0. 程序和资源一共15M. 来自 //需要的留个EMAIL.... ...
- android小游戏源码拼图,android编写的数字拼图游戏(带详细注释)
[实例简介]自己正在学android,编写了一个简单的数字拼图游戏,有详细注释,适合初学者参考使用,比较简单易懂 [实例截图] [核心代码] package com.tsu; import java. ...
- Python Tkinter——数字拼图游戏详解版
Python Tkinter 实践系列--数字拼图游戏详解版 import random #Python中的random是一个标准库用于生成随机数.随机整数.还有随机从数据集取数据. import t ...
最新文章
- mysql connector bin_mysql-connector-java-xxx-bin.jar包的使用
- LeetCode算法题11:递归和回溯-解数独
- Visual C++——《可视化编程技术》实验报告——MFC编程
- linux命令修改内容怎么回退,linux命令(修改).doc
- Sharepoint2013搜索学习笔记之自定义查询规则(十)
- html 音乐能连续播放吗,音乐在不同HTML页面的连续播放问题
- 我的面试准备过程--队列与栈(更新中)
- rocketmq的有序消费模式和并发消费模式的区别
- re模块和正则表达式
- LinuxCNC学习-HAL库介绍
- 人脸识别经典算法实现(三)——LBP算法
- SI4463软件开发记录
- 保险污名化?区块链赋予保险的「四个机会」
- 每个英文名字背后的寓意,你也来起一个吧
- tomcat中JSP跳转Servlet时卡白页的原因
- qrcode.js的识别解析二维码图片和生成二维码图片
- 批处理打开/关闭休眠
- tenacity 报错_Python Tenacity 实现重试机制
- 学java怎么做兼职?学Java什么程度才能找兼职?
- Unity中制作动画
热门文章
- 大学生如何做好职业生涯规划
- Flowplayer播放器flash全屏播放器带播放按钮
- 为什么面对读博大家都那么悲观?
- 全球政府机构十大网络安全事件
- Revit二次开发---墙体开洞
- 两位清华校友闪耀NeurIPS2020!各9篇入选,华人之最,“不意外,哪个顶会近就投哪个”...
- 为 K8s workload 引入的一些 BPF datapath 扩展
- 深度学习基础: BP神经网络训练MNIST数据集
- win10删除开机密码_电脑要开机时,按什么键才能一键还原?
- 2023年HCIP/CCNP考试战报