c语言小项目————2048
来源:互联网 发布:网络女主播都是穷人 编辑:程序博客网 时间:2024/05/16 23:38
c语言版2048
一.前言
- 环境准备:vc系列(vc 6.0,vs2005等等)编译器,下载easy x
- easy x下载链接
- easy x简介:相当于多加了一个库函数,头文件为:#include < graphics.h > 可以绘图,加载图片,音乐,获取鼠标信息。
- easy x官网链接
二. 效果截图
三. 程序框架和函数调用关系
1. 所有函数
main()//主函数lent()//开始show1()//主页面show2()//游戏简介页面show3()//操作界面show4()//游戏画面start()//游戏rands()//随机生成数字块updateWithInput()//与输入有关的更新judge()//判断是否失败win()//成功界面lose()//失败界面
2. 函数框架-伪代码
int mian(void){ lent();//开始 } void lent{ while(1) { show1(); //主页面 1.获取鼠标信息 2.根据鼠标信息进行选择界面 if(鼠标点击游戏界面这个选项) start();//游戏界面 else if() show2();//游戏说明界面 else if() show3();//操作说明界面 else if() exit(0);//退出 } } void start(){ 1.使map数组元素清零 map(二维数组,保存2048游戏4*4格子中每个数的信息); rands();//随机位置生成2/4 rands(); while(1) { show4()//游戏界面 updateWithInput();//与输入有关的更新 if(score_i>=2048)//本次得分超过2048胜利 win();//胜利界面 } } void rands(){ 随机位置生成2/4 judge();//判断是否失败 失败进入失败界面 }void updateWithInput(){ 1.根据wasd 或者方向键进行2048中所有数字块的移动,合并碰撞 2.每次移动后计算本次得分,总分 3.每次移动后调用rands函数. }
3. 函数框架-思维导图
四. 部分功能实行思路
1. 各种界面的绘制所用的的函数
- setbkcolor()//设置背景颜色
- setfillcolor()//设置填充颜色
- settextcolor()//设置字体颜色
- setfont()//设置字体大小,字体样式
- drawtext()//指定位置写入字符串
- solidroundrect()//绘制圆角矩形
- 具体用法可以看easy x帮助文件
2. 鼠标的应用
MOUSEMSG m;//定义鼠标类型变量 while(1) { m=GetMouseMsg();//获取鼠标信息 if(m.uMsg==WM_LBUTTONDOWN)//此时鼠标左键按下 { if(m.x>WIDTH/2-45&&m.x<WIDTH/2+45&&m.y>HEIGHT/3&&m.y<HEIGHT/3+30)/\/鼠标座标所在位置 start(); } } getch();}
更多操作可以看easy x的帮助
3. 图片的加载
IMAGE img0;//定义图片类型变量loadimage(&img0,"pic\\0.jpg");//类似于赋值putimage(i*165+30,j*165+230,&img0);//将图片写入屏幕上
4. 随机位置产生数字块
void rands(){ int x,y,temp,num; srand((int)time(0)); while(1) { x=rand()%4; y=rand()%4; temp=rand()%5; if(temp==1) num=4; else num=2; if(map[y][x]==0)//随机生成的坐标为0时,将2/4赋给它,并跳出循环 { map[y][x]=num; break; } if(judge())//当格子内没有空位置并且有相邻相同的时跳出循环 break; }}
5. 失败判断
int judge(){ int i,j; //检查是否有0值 for(i=0;i<4;i++) for(j=0;j<4;j++) if(map[i][j]==0) return 0; //查看边界是否有相同的 for(i=0;i<4;i+=3) for(j=1;j<3;j++) if(map[i][j-1]==map[i][j]||map[i][j+1]==map[i][j]) return 1; for(i=1;i<3;i++) for(j=0;j<4;j+=3) if(map[i-1][j]==map[i][j]||map[i+1][j]==map[i][j]) return 1; //查看中心是否有相同 for(i=1;i<3;i++) for(j=1;j<3;j++) if(map[i-1][j]==map[i][j]||map[i+1][j]==map[i][j]||map[i][j-1]==map[i][j]||map[i][j+1]==map[i][j]) return 1; lose();//失败界面}
6. 与输入有关的更新(以上为例)
if(keyboard=='w'||keyboard=='W'||keyboard==72)//上 { for(n=0;n<4;n++)//次数 for(i=1;i<4;i++)//行 for(j=0;j<4;j++)//列 if(map[i][j]!=0)//若当前元素不为0 { if(map[i-1][j]==0)//上方元素为0,当前元素上移 { map[i-1][j]=map[i][j]; map[i][j]=0; } if(map[i-1][j]==map[i][j])//当前元素和上方元素相同碰撞 { num=map[i][j]*2;//得分 score_i=score_i+num;//本次操作得分 map[i-1][j]=map[i][j]*2; map[i][j]=0; } } score=score+score_i;//目前累计的分 rands();//随机位置生成数组块 }
五.源代码
- test9
阅读全文
0 0
- C语言小项目—注释转换
- c语言小项目————2048
- C语言小项目实践——日历程序
- C语言编写—通讯录(小项目)
- C语言小项目—注释转换( C注释转换为C++注释 )
- c语言小代码——对齐
- C语言——小算法
- c语言小函数——strcat
- c语言小代码——对齐
- C语言——关机小程序
- C语言小程序—定时关机
- C小项目——电子词典
- C语言小用——端口查询小程序
- C语言——项目规范
- 注释转换——C语言项目
- C语言项目——通讯录
- 第十九周—c语言 电子词典项目
- C语言项目—银行储蓄系统
- 如何新建stm32寄存器工程
- opencv中使用opengl
- scala小练习二
- 广播接收者
- ElasticSearch安装部署,基本配置(Ubuntu14.04)
- c语言小项目————2048
- Linux Shell 多线程执行程序
- 深度学习Caffe实战笔记(8)模型参数详解(补充)
- Spring 注解解析
- VRRP协议及Keepalived原理使用
- python 关于Python看金庸小说的实验
- win7下安装配置tomcat,java运行环境
- C++类所占大小的问题
- 模态框混合使用百度编辑器时工具栏的浮动问题