#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语言数字拼图游戏代码相关推荐

  1. python拼图游戏代码的理解_Python编写的数字拼图游戏(含爬山算法人机对战功能)...

    数字拼图游戏与拼图游戏原理一致,把打乱了的数字或图片经移动,拼成给定的目标数字或图片,其中总有一个空的地方,让相邻(上下左右)的方块移动,直至达到目标. 游戏代码由浙江温州永嘉县教师发展中心应根球老师 ...

  2. html九图拼图游戏代码,基于Vue.js实现数字拼图游戏

    先来看看效果图: 功能分析 当然玩归玩,作为一名Vue爱好者,我们理应深入游戏内部,一探代码的实现.接下来我们就先来分析一下要完成这样的一个游戏,主要需要实现哪些功能.下面我就直接将此实例的功能点罗列 ...

  3. python拼图游戏代码的理解_有意思的JS(1)拼图游戏 玩法介绍及其代码实现

    我是你们的索儿呀,很幸运我的文章能与你相见,愿萌新能直观的感受到Javascript的趣味性,愿有一定基础者有所收获,愿大佬不吝赐教 拼图游戏是一张图片分为若干块,打乱次序,将其中一块变为空白块,其只 ...

  4. Python编写的数字拼图游戏(含爬山算法人机对战功能)

    数字拼图游戏与拼图游戏原理一致,把打乱了的数字或图片经移动,拼成给定的目标数字或图片,其中总有一个空的地方,让相邻(上下左右)的方块移动,直至达到目标. 游戏代码由浙江温州永嘉县教师发展中心应根球老师 ...

  5. Python Tkinter——数字拼图游戏

    Python Tkinter 实践系列--数字拼图游戏 tkinter模块,掌握窗口创建.消息循环等tkinter的基本架构 读取并显示图片,处理键盘事件 导入random库,导入python中的tk ...

  6. C语言贪吃蛇游戏代码,贪吃蛇C语言代码实现大全

    一.C语言贪吃蛇代码实现前言 设计贪吃蛇游戏的主要目的是让大家夯实C语言基础,训练编程思维,培养解决问题的思路,领略多姿多彩的C语言. 贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏, ...

  7. C语言数组制作拼图游戏,C语言自制拼图游戏.doc

    C语言自制拼图游戏 C语言~~自制-拼图游戏 原帖及讨论:/thread-233257-1-1.html //编译环境VC++6.0. 程序和资源一共15M. 来自 //需要的留个EMAIL.... ...

  8. android小游戏源码拼图,android编写的数字拼图游戏(带详细注释)

    [实例简介]自己正在学android,编写了一个简单的数字拼图游戏,有详细注释,适合初学者参考使用,比较简单易懂 [实例截图] [核心代码] package com.tsu; import java. ...

  9. Python Tkinter——数字拼图游戏详解版

    Python Tkinter 实践系列--数字拼图游戏详解版 import random #Python中的random是一个标准库用于生成随机数.随机整数.还有随机从数据集取数据. import t ...

最新文章

  1. mysql connector bin_mysql-connector-java-xxx-bin.jar包的使用
  2. LeetCode算法题11:递归和回溯-解数独
  3. Visual C++——《可视化编程技术》实验报告——MFC编程
  4. linux命令修改内容怎么回退,linux命令(修改).doc
  5. Sharepoint2013搜索学习笔记之自定义查询规则(十)
  6. html 音乐能连续播放吗,音乐在不同HTML页面的连续播放问题
  7. 我的面试准备过程--队列与栈(更新中)
  8. rocketmq的有序消费模式和并发消费模式的区别
  9. re模块和正则表达式
  10. LinuxCNC学习-HAL库介绍
  11. 人脸识别经典算法实现(三)——LBP算法
  12. SI4463软件开发记录
  13. 保险污名化?区块链赋予保险的「四个机会」
  14. 每个英文名字背后的寓意,你也来起一个吧
  15. tomcat中JSP跳转Servlet时卡白页的原因
  16. qrcode.js的识别解析二维码图片和生成二维码图片
  17. 批处理打开/关闭休眠
  18. tenacity 报错_Python Tenacity 实现重试机制
  19. 学java怎么做兼职?学Java什么程度才能找兼职?
  20. Unity中制作动画

热门文章

  1. 大学生如何做好职业生涯规划
  2. Flowplayer播放器flash全屏播放器带播放按钮
  3. 为什么面对读博大家都那么悲观?
  4. 全球政府机构十大网络安全事件
  5. Revit二次开发---墙体开洞
  6. 两位清华校友闪耀NeurIPS2020!各9篇入选,华人之最,“不意外,哪个顶会近就投哪个”...
  7. 为 K8s workload 引入的一些 BPF datapath 扩展
  8. 深度学习基础: BP神经网络训练MNIST数据集
  9. win10删除开机密码_电脑要开机时,按什么键才能一键还原?
  10. 2023年HCIP/CCNP考试战报