c语言程序设计俄罗斯方块PPT,俄罗斯方块游戏:C语言程序设计初步感受
C语言课程设以一节课,老师提供了一个C语言的俄罗斯方块游戏让我们感受,本学期C语言课程,主要是各种语句的练习,这次是用以前的知识来感受一个实际的系统。
首先安装c-free,然后打开老师所发给我们的小程序。
界面很简单,没想到C语言还能做这么有意思的东西,真是没有想到。
分析一下程序,感觉比较太复杂的,但就是本学期学习的简单语句的组合,运用起来如此神奇。
1、首先是在屏幕上显示的语句printf
2、运用for语句建立窗口
for(i=2;i<2*Frame_width-2;i+=2)
{
gotoxy(hOut,FrameX+i,FrameY);
printf("═"); //打印上横框
}
for(i=2;i<2*Frame_width-2;i+=2)
{
gotoxy(hOut,FrameX+i,FrameY+Frame_height);
printf("═"); //打印下横框
a[FrameX+i][FrameY+Frame_height]=2; //记住下横框有图案
}
for(i=1;i
{
gotoxy(hOut,FrameX,FrameY+i);
printf("║"); //打印左竖框
a[FrameX][FrameY+i]=2; //记住左竖框有图案
}
for(i=1;i
{
gotoxy(hOut,FrameX+2*Frame_width-2,FrameY+i);
printf("║"); //打印右竖框
a[FrameX+2*Frame_width-2][FrameY+i]=2; //记住右竖框有图案
}
3、制作俄罗斯方块并将其进行旋转
void make_tetris(struct Tetris *tetris)
{
a[tetris->x][tetris->y]=b[0]; //中心方块位置的图形状态:1-有,0-无
switch(tetris->flag) //共6大类,19种类型
{
case 1: //田字方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x+2][tetris->y-1]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
case 2: //直线方块:----
{
a[tetris->x-2][tetris->y]=b[1];
a[tetris->x+2][tetris->y]=b[2];
a[tetris->x+4][tetris->y]=b[3];
break;
}
case 3: //直线方块: |
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x][tetris->y-2]=b[2];
a[tetris->x][tetris->y+1]=b[3];
break;
}
case 4: //T字方块
{
a[tetris->x-2][tetris->y]=b[1];
a[tetris->x+2][tetris->y]=b[2];
a[tetris->x][tetris->y+1]=b[3];
break;
}
case 5: //T字顺时针转90度方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x][tetris->y+1]=b[2];
a[tetris->x-2][tetris->y]=b[3];
break;
}
case 6: //T字顺时针转180度方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x-2][tetris->y]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
case 7: //T字顺时针转270度方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x][tetris->y+1]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
case 8: //Z字方块
{
a[tetris->x][tetris->y+1]=b[1];
a[tetris->x-2][tetris->y]=b[2];
a[tetris->x+2][tetris->y+1]=b[3];
break;
}
case 9: //Z字顺时针转90度方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x-2][tetris->y]=b[2];
a[tetris->x-2][tetris->y+1]=b[3];
break;
}
case 10: //Z字顺时针转180度方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x-2][tetris->y-1]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
case 11: //Z字顺时针转270度方块
{
a[tetris->x][tetris->y+1]=b[1];
a[tetris->x+2][tetris->y-1]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
case 12: //7字方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x][tetris->y+1]=b[2];
a[tetris->x-2][tetris->y-1]=b[3];
break;
}
case 13: //7字顺时针转90度方块
{
a[tetris->x-2][tetris->y]=b[1];
a[tetris->x-2][tetris->y+1]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
case 14: //7字顺时针转180度方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x][tetris->y+1]=b[2];
a[tetris->x+2][tetris->y+1]=b[3];
break;
}
case 15: //7字顺时针转270度方块
{
a[tetris->x-2][tetris->y]=b[1];
a[tetris->x+2][tetris->y-1]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
case 16: //倒7字方块
{
a[tetris->x][tetris->y+1]=b[1];
a[tetris->x][tetris->y-1]=b[2];
a[tetris->x+2][tetris->y-1]=b[3];
break;
}
case 17: //倒7字顺指针转90度方块
{
a[tetris->x-2][tetris->y]=b[1];
a[tetris->x-2][tetris->y-1]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
case 18: //倒7字顺时针转180度方块
{
a[tetris->x][tetris->y-1]=b[1];
a[tetris->x][tetris->y+1]=b[2];
a[tetris->x-2][tetris->y+1]=b[3];
break;
}
case 19: //倒7字顺时针转270度方块
{
a[tetris->x-2][tetris->y]=b[1];
a[tetris->x+2][tetris->y+1]=b[2];
a[tetris->x+2][tetris->y]=b[3];
break;
}
}
4、判断是否满行并删除满行的俄罗斯方块
void del_full(HANDLE hOut,struct Tetris *tetris)
{ //当某行有Frame_width-2个方块时,则满行
int k,del_count=0; //分别用于记录某行方块的个数和删除方块的行数的变量
for(j=FrameY+Frame_height-1;j>=FrameY+1;j--)
{
k=0;
for(i=FrameX+2;i
{
if(a[i][j]==1) //竖坐标依次从下往上,横坐标依次由左至右判断是否满行
{
k++; //记录此行方块的个数
if(k==Frame_width-2)
{
for(k=FrameX+2;k
{ //删除满行的方块
a[k][j]=0;
gotoxy(hOut,k,j);
printf(" ");
Sleep(1);
}
for(k=j-1;k>FrameY;k--)
{ //如果删除行以上的位置有方块,则先清除,再将方块下移一个位置
for(i=FrameX+2;i
{
if(a[i][k]==1)
{
a[i][k]=0;
gotoxy(hOut,i,k);
printf(" ");
a[i][k+1]=1;
gotoxy(hOut,i,k+1);
printf("□");
}
}
}
j++; //方块下移后,重新判断删除行是否满行
del_count++; //记录删除方块的行数
}
}
}
}
tetris->score+=100*del_count; //每删除一行,得100分
if( del_count>0 && ( tetris->score%1000==0 || tetris->score/1000>tetris->level-1 ) )
{ //如果得1000分即累计删除10行,速度加快20ms并升一级
tetris->speed-=20;
tetris->level++;
}
}
5体会
1、C语言游戏程序可以看到,C语言是我们第一门编程语言,从对计算机没有任何编程能力的菜鸟,到现在能读懂C语言的程序,感觉自己在慢慢进步。
2、计算机应用系统,就是不断接收用户的输入,然后根据相应的逻辑,显示相应的内容的过程。
3、按照这个思路,我可以把程序修改成一个打飞机的游戏,控制飞机左右一定,就是我的飞机能不仅仅在下面跑,还可以到处跑,这个只要把我的飞机限制在21行的限制取消就可以了。
c语言程序设计俄罗斯方块PPT,俄罗斯方块游戏:C语言程序设计初步感受相关推荐
- C语言可以敲哪些小游戏,C语言可以写哪些小游戏?
C语言可以写哪些小游戏? C语言可以编手机游戏.你叫他去死不过我这有贪吃蛇的代码,你倒可以看看(用TC编译一定过( #包括 #包括 #包括 #包括 #包括 #定义输入7181 #定义ESC 283 # ...
- 弹力球C语言课程设计,弹力球游戏c语言代码.docx
弹力球游戏c语言代码 #include #include #include #include /*定义游戏级别*/#define ELEMENTARY 15 /*初级*/#define INTERME ...
- 弹力球c语言代码运行,弹力球游戏c语言代码
弹力球游戏c语言代码 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 #include #include #include #inc ...
- c语言入门自学ppt文库,《C语言入门基础》PPT课件.ppt
第3章C语言入门基础 在正式学习C语言之前首先要掌握C语言的基本知识 如数制 对象的命名即标识符 以及C语言中的数据类型等 通过本章的学习为以后几章打下基础 3 1标识符 在C语言中 程序的编写是运用 ...
- c语言程序设计中三子棋游戏,C语言实现简易版三子棋游戏
本文实例为大家共享了C语言实现三子棋游戏的详细代码,供大家参考,详细内容如下 什么是多文件? 多数大型的工程的头文件和源文件非常多,我们也不可能把所有的代码都写在同一个文件里,这样也不方便代码的阅读与 ...
- c语言微课ppt嵌套函数,C语言课程中循环嵌套的微课教学设计与思考
C语言课程中循环嵌套的微课教学设计与思考 2018-12-01 话题:教育学习,教学方法 摘 要 本文以C语言课程中循环嵌套内容为例,通过观看全国高校微课比赛获奖作品与专家点评得到启示,本科与高职的微 ...
- c语言课时设计猜坐标游戏,c语言小游戏课程设计报告.docx
c语言小游戏课程设计报告 中国地质大学 本科生课程论文封面 课程名称c语言课程设计 教师姓名陈喆老师 本科生姓名周宜诺 本科生学号XX 本科生专业土地资源管理 所在院系公共管理学院 类别: 日期: 课 ...
- c语言课程设计走迷宫游戏,C语言课程设计-迷宫游戏.doc
计算机技术基础课程设计 C语言 设计报告 题目:完整的二维迷宫游戏 学院:工商管理学院 专业:信息系统与信息管理 班级:050507 姓名:孙月 指导教师:张首伟 设计日期:2004年12月10日 题 ...
- c语言编写数据存储的游戏,c语言经典小程序和c语言编写的小游戏带注释(自动保存的).doc...
c语言经典小程序和c语言编写的小游戏带注释(自动保存的) 1.写一个定时?关机的小程?序,可以立即关?闭计算机,也可以一段?时间后关闭?计算机. #inclu?de #inclu?de #inclu? ...
最新文章
- 硬核!15张图解Redis为什么这么快
- protoc支持c_protoc 命令参数
- 无向图的最小生成树(克鲁斯卡尔算法 Kruskal)
- 基础才是重中之重~何为原子化操作
- LinkedHashMap的实现原理
- CSDN鸿蒙社区福利:HarmonyOS Beta 版内测资格申请
- Xml序列化、反序列化帮助类
- 中级通信工程师报名-在线题库-历年真题-模拟试题
- STM32的串口协议
- 最新解决“请在微信客户端中打开链接”的教程分享
- 用Python实现小黑屋游戏
- 2022焊工(初级)考试题库及答案
- iPhone共享WIFI密码到Macbook - 无需在Mac上使用WIFI万能钥匙
- [实变函数]3.3 可测集类
- 12306登录python_python tcp登录注册_12306注册登录入口
- RGB颜色空间转LAB
- 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 总共多少步
- Android高效旋转图片的方式
- realsense系列(一):快速查看realsense相机深度图像和RGB图像
- 鸿蒙和ios流畅对比,华为鸿蒙OS与苹果iOS测试,谁更流畅,真实对比大家看一下...
热门文章
- 数据挖掘学习日志(part2)--主成分法确定权重与R实现
- Django从理论到实战(part4)--创建我们的第一个页面
- 关于 Angular 应用 tsconfig.json 中的 lib 属性
- SAP 电商云 Spartacus UI 4.1 版本的延迟加载技术介绍
- SAP Spartacus默认的baseSite是从源代码什么地方读取的
- SAP Spartacus里的concurrently依赖
- SAP C4C business object的UUID和可读性更好的ID
- SAP UI5 Web Component里如何自定义CSS style
- SAP UI5 return sap.ui.view的实现
- SAP Cloud for Customer My settings按钮被disable的原因分析