纯C语言写的拼图游戏
大家好,刚才整理文件,找到了自己高三?高二?时候改编的拼图游戏,当然,因为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语言写的拼图游戏相关推荐
- flash编程可以用c语言,C语言写的小游戏和FLASH小游戏有何区别呢-c语言编程手机软件...
C语言写的小游戏和FLASH小游戏有何区别呢-c语言编程手机软件 (2010-12-05 17:12:08) 标签: 杂谈 分类: 随笔 同题有大大的区分c语言写游戏可以直接挪用体系api举行编著,合 ...
- c语言课程设计--拼图游戏,C语言课程设计_拼图游戏.pdf
C -- 语言课程设计 拼图游戏 一.实验内容 玩家通过鼠标单击相邻位有空位的方块来移动方块,从而最终将一副散乱的图片拼成完 整的图片.要求如下: 1. 游戏的初始界面如图一,单击空格键进入游戏,进入 ...
- 纯C语言写计算器界面
纯C语言写计算器界面,GDI绘制控件,HOOK拦截键盘按键. 主文件源码预览: // Calculator.cpp : 定义应用程序的入口点. //#include "stdafx.h&qu ...
- C语言开发的拼图游戏
C语言开发的拼图游戏 项目效果 话不多是直接干货 引用的头文件 菜单栏 主界面 加载图片 画图片 游戏代码 我的B站链接:[B站链接](https://space.bilibili.com/27474 ...
- [杂项项目]纯C语言实现控制台小游戏——数字拼图
一年前写的小游戏,当时感觉小有成就,现在发现缺陷真的很多.不禁感叹,当时为什么会用那么多goto呢.在这里真的建议大家不要用goto.只是现在懒得改了,毕竟是小程序.贴出来供大家参考.如果有时间后序再 ...
- 纯C语言实现贪吃蛇游戏(VC6.0)
转自C语言网 今天笔者为大家展示C语言写的贪吃蛇游戏,让大家玩一玩自己写的游戏~ 是纯C语言哦~VC6.0开发 无问题 首先,开始界面: 游戏界面如下: 代码如下: 笔者VC6.0下编写,测试无问题, ...
- C语言数组制作拼图游戏,C语言自制拼图游戏.doc
C语言自制拼图游戏 C语言~~自制-拼图游戏 原帖及讨论:/thread-233257-1-1.html //编译环境VC++6.0. 程序和资源一共15M. 来自 //需要的留个EMAIL.... ...
- JavaScript写一个拼图游戏
拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)? 因为图片是一整张jpg或 ...
- C语言写炸弹人小游戏
陆续改了半个月,不断更改游戏目的,结合了老鼠走迷宫和贪吃蛇游戏,终于在昨天凌晨2点写好了我的炸弹超人游戏.基于Windows图形界面,用C语言编写.虽然并不复杂,但收获颇多. 文件1:winapp.c ...
最新文章
- 从代码设计到应用开发,入坑深度学习看这本书就够了
- 栈与队列10——可见的山峰对数量
- RSPN技术华为交换机(s2000hi)
- 试戴系统完全开放—zoomla!逐浪cms在后4.6时代的又一个亮点
- Android原生开发学习笔记(java)
- 与速度对偶的角速度系公式
- 记录Android Studio KeyMap 导入的问题
- win7设置自动开机时间_电脑如何设置定时开机?瞬间让你的电脑启动变得随心所欲...
- Java8 根据身份证号获取年龄
- 第九章:iOS应用的界面编辑
- win10系统备份教程
- 如何用python编写财务记账软件_Python实现简单的记账本功能
- linux 不自动进入睡眠,linux 7 为何自动睡眠
- 2021SC@SDUSC山东大学软件学院软件工程应用与实践--Ebiten代码分析 源码分析(四)
- 【C4D】整体缩放模型
- Excel常用函数(案例说明)
- linux下查看系统配置参数
- 产品定位--如何进行互联网产品定位/制定产品目标?
- 手机红外遥控器 求源码
- 图片验证码、阿里云短信发送和验证的逻辑