大家好,刚才整理文件,找到了自己高三?高二?时候改编的拼图游戏,当然,因为c不支持图片,所以以数字1-8代替的,算法通用。。。

声明:

看图片,我放到网盘都3年了,里面自己改编了一半,算是半原创,算法作者找不到了、、、

以下正文

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int MenuReturn;
void RandMap(char map[][3]);//随机生成数
void Game(void);//游戏主循环
int Help(void);//游戏玩法介绍
int About(void);
int        Menu(void);
void DealWithMenu(int MenuReturn);
void Show(char map[][3]);
int IsWin(char map[][3]);//判断是否达成胜利条件
int main(void)
{system("color 1E");while(1){MenuReturn = Menu();DealWithMenu(MenuReturn);}return 0;
}
int        Menu(void)
{int sel = 1;int tem = 0;char kb;system("cls");printf("  数字拼图      加q:1179307527\n\n\n");printf("->开始游戏<-\n  玩法介绍  \n  关    于  \n  退出游戏  \n");do{kb = getch();switch(kb){case 'w' : tem--;sel += tem;break;case 's' : tem++;sel += tem; break;        default  : NULL ; break;}tem = 0;if (sel == 0){sel = 4;}if (sel == 5){sel = 1;}system("cls");printf("  数字拼图\n\n\n");switch (sel){case 1 : printf("->开始游戏<-\n  玩法介绍  \n  关    于  \n  退出游戏  \n");break;case 2 : printf("  开始游戏  \n->玩法介绍<-\n  关    于  \n  退出游戏  \n");break;case 3 : printf("  开始游戏  \n  玩法介绍  \n->关    于<-\n  退出游戏  \n");break;case 4 : printf("  开始游戏  \n  玩法介绍  \n  关    于  \n->退出游戏-<\n");break;default: return-1; break; }}while(kb != '\r');return sel;
}
void DealWithMenu(int MenuReturn)
{int retu;switch(MenuReturn){case 1 : Game();break;case 2 : retu = Help();break;case 3 : retu = About();break;case 4 : exit(0);break;case -1: printf("发生未知错误!\n");        }}
void Show(char map[][3])
{int i,j;system("cls");for(i=0;i<3;i++){for(j=0;j<3;j++){printf("%2c",map[i][j]);}printf("\n");}return;
}
void MoveNumber(char map[][3],int *Crx,int *Cry)
{enum {UP,DOWN ,LEFT ,RIGHT};int kb;int dx = 0,dy = 0;switch(getch()){case 'w' :dy--;kb = UP;  break;case 's' :dy++;kb = DOWN;break;case 'a' :dx--;kb = LEFT;break;case 'd' :dx++;kb = RIGHT;break;default  :NULL;break; }if(kb == UP&& *Cry+1<=2){map[*Cry][*Crx] = map[*Cry+1][*Crx];map[*Cry+=1][*Crx] = ' ';}if(kb == DOWN&&*Cry-1>=0){map[*Cry][*Crx] = map[*Cry-1][*Crx];map[*Cry-=1][*Crx] = ' ';}if(kb == LEFT&&        *Crx+1<=2){map[*Cry][*Crx] = map[*Cry][*Crx+1];map[*Cry][*Crx+=1] = ' ';}if(kb ==RIGHT&& *Crx-1>=0){map[*Cry][*Crx] = map[*Cry][*Crx-1];map[*Cry][*Crx-=1] = ' ';}return;
}
void RandMap(char map[][3])
{int i,j,k,n = 0;srand((unsigned)time(NULL));for(i = 0;i<8;i++){map[0][i] = '1'+i;}while(n<99)//随机交换99次,这个算法不太好,容易出现死局 {int tem;j = rand()%8; k = rand()%8;if (k-j == 1||j-k == 1||k-j == 3||j-k == 3){continue;//减小死局出现的概率,相邻位置的数字不能交换 }tem = map[0][k];map[0][k] = map[0][j];map[0][j] = tem;n++;}//这个算法可以实现指定数组的乱序排列,但对本游戏不太合适,乱序不保证游戏有解 map[2][2] = ' ';}
int Help(void)
{int judje = 0;system("cls");printf("点击开始游戏,程序会随机生成一个数阵,例如\n""314\n286\n75 \n点击wasd移动数字,直至\n123\n456\n78 \n则胜出\n");printf("返回菜单吗?\t   =====   y/n\n");do{int ch = getchar();if(ch == 'y'){return 1;}if(ch == 'n'){judje = 1;}}while(judje == 1);
}
int About(void)
{int judje = 0;system("cls"); printf("本游戏由莫言情难忘改编\n编程之路,从这里开始\n");printf("返回菜单吗?\t   ======    y/n\n");do{int ch = getchar();if(ch == 'y'){return 1;}if(ch == 'n'){judje = 1;}}while(judje == 1);
}
int IsWin(char map[][3])
{int i;int j = 0;for(i = 0;i<8;i++){if (map[0][i] == '1'+i)j++;}if (j == 8){return 1;}else {return 0;}}
void Game(void)
{char Map[3][3] = {0};int Crx = 2;int Cry = 2;RandMap(Map);//先生成一个Show(Map);printf("任意键开始游戏!!\n");getch();unsigned int t1 = time(NULL);while(1){MoveNumber(Map,&Crx,&Cry);//用户操作 Show(Map);unsigned int t2 = time(NULL);if(IsWin(Map)){printf("胜利~!用时%dS",t2-t1);return;}}
}

纯C语言写的拼图游戏相关推荐

  1. flash编程可以用c语言,C语言写的小游戏和FLASH小游戏有何区别呢-c语言编程手机软件...

    C语言写的小游戏和FLASH小游戏有何区别呢-c语言编程手机软件 (2010-12-05 17:12:08) 标签: 杂谈 分类: 随笔 同题有大大的区分c语言写游戏可以直接挪用体系api举行编著,合 ...

  2. c语言课程设计--拼图游戏,C语言课程设计_拼图游戏.pdf

    C -- 语言课程设计 拼图游戏 一.实验内容 玩家通过鼠标单击相邻位有空位的方块来移动方块,从而最终将一副散乱的图片拼成完 整的图片.要求如下: 1. 游戏的初始界面如图一,单击空格键进入游戏,进入 ...

  3. 纯C语言写计算器界面

    纯C语言写计算器界面,GDI绘制控件,HOOK拦截键盘按键. 主文件源码预览: // Calculator.cpp : 定义应用程序的入口点. //#include "stdafx.h&qu ...

  4. C语言开发的拼图游戏

    C语言开发的拼图游戏 项目效果 话不多是直接干货 引用的头文件 菜单栏 主界面 加载图片 画图片 游戏代码 我的B站链接:[B站链接](https://space.bilibili.com/27474 ...

  5. [杂项项目]纯C语言实现控制台小游戏——数字拼图

    一年前写的小游戏,当时感觉小有成就,现在发现缺陷真的很多.不禁感叹,当时为什么会用那么多goto呢.在这里真的建议大家不要用goto.只是现在懒得改了,毕竟是小程序.贴出来供大家参考.如果有时间后序再 ...

  6. 纯C语言实现贪吃蛇游戏(VC6.0)

    转自C语言网 今天笔者为大家展示C语言写的贪吃蛇游戏,让大家玩一玩自己写的游戏~ 是纯C语言哦~VC6.0开发 无问题 首先,开始界面: 游戏界面如下: 代码如下: 笔者VC6.0下编写,测试无问题, ...

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

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

  8. JavaScript写一个拼图游戏

    拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)?  因为图片是一整张jpg或 ...

  9. C语言写炸弹人小游戏

    陆续改了半个月,不断更改游戏目的,结合了老鼠走迷宫和贪吃蛇游戏,终于在昨天凌晨2点写好了我的炸弹超人游戏.基于Windows图形界面,用C语言编写.虽然并不复杂,但收获颇多. 文件1:winapp.c ...

最新文章

  1. 从代码设计到应用开发,入坑深度学习看这本书就够了
  2. 栈与队列10——可见的山峰对数量
  3. RSPN技术华为交换机(s2000hi)
  4. 试戴系统完全开放—zoomla!逐浪cms在后4.6时代的又一个亮点
  5. Android原生开发学习笔记(java)
  6. 与速度对偶的角速度系公式
  7. 记录Android Studio KeyMap 导入的问题
  8. win7设置自动开机时间_电脑如何设置定时开机?瞬间让你的电脑启动变得随心所欲...
  9. Java8 根据身份证号获取年龄
  10. 第九章:iOS应用的界面编辑
  11. win10系统备份教程
  12. 如何用python编写财务记账软件_Python实现简单的记账本功能
  13. linux 不自动进入睡眠,linux 7 为何自动睡眠
  14. 2021SC@SDUSC山东大学软件学院软件工程应用与实践--Ebiten代码分析 源码分析(四)
  15. 【C4D】整体缩放模型
  16. Excel常用函数(案例说明)
  17. linux下查看系统配置参数
  18. 产品定位--如何进行互联网产品定位/制定产品目标?
  19. 手机红外遥控器 求源码
  20. 图片验证码、阿里云短信发送和验证的逻辑

热门文章

  1. 一位求职者总结的面试小攻略
  2. OLED屏幕字库的建立
  3. python3中PCV库安装的方法步骤
  4. 相空间重构维度m的选择:Cao法(matlab实现)
  5. vue+element 动态生成二维码并选择批量打印表格内容
  6. ADC 测量电源电压电路
  7. 机智云开发平台一键生成小程序,低成本将智能产品快速推向市场
  8. 啥是佩奇?Python3大战小猪佩奇
  9. Flex Cairngorm简介
  10. ㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣化学规律ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎...