大一c语言课程设计,俄罗斯方块课程设计,麻烦有人帮忙做一下吗?三周时间急需!!!

c语言俄罗斯方块游戏程序设计报告1_图文_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
c语言俄罗斯方块游戏程序设计报告1
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩30页未读,
定制HR最喜欢的简历
你可能喜欢问一下有谁做过俄罗斯方块吗【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:581,888贴子:
问一下有谁做过俄罗斯方块吗收藏
想问一下关于方块的一些问题
随机下落的实现,声音的实现的问题等
有问题我再来请教
还有就是有没有像这种符号&=
,我从来没见过这样用,比如map[0] &= 0xf0,是不是把0xf0的点阵覆盖到原来显示点阵呢?
需要的话可以发给你
现在还是不懂
我已经做到方块的制作和按键的处理,时间中断等模块,怎么串起来啊??迷茫了,有木有高人指点下?
登录百度帐号俄罗斯方块?课程设计_图文_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
俄罗斯方块?课程设计
&&俄罗斯方块开发
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩35页未读,
定制HR最喜欢的简历
你可能喜欢拒绝访问 | www.wangchao.net.cn | 百度云加速
请打开cookies.
此网站 (www.wangchao.net.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(4ccc-ua98).
重新安装浏览器,或使用别的浏览器从零开始---控制台用c写俄罗斯方块游戏(1)
很少写博文,一来自身知识有限,二来自己知道,已经有很多这样的博文了,三就是因为懒,文笔也一般,四来刚出来工作,时间也不多
之所以写这篇博文,是因为应群里小伙伴学习c的激情,让他们跟我一样能使用c写出点东西出来,这样会非常有成就感,亦如当初的我
这篇博文适合的对象
1,学生或刚学完c,学会c语言基本语法,想要做出一点东西有成就感的,指针可以不知道,但至少要会用数组
2,因为这是我大一刚学c后写的,所以命名有些2,但里面有注释,代码也不是很长,所以不适合中大神级别的人学习
代码已经有了,我大一时写,因为我懒,本来是想直接用那个代码的,但我觉得直接贴出来讲作用,这样也不适合新手学习,所以我一步一步带大家来弄,
一步一步的给出想法,以及实现。之前弄的时候也有百度,也有源码什么的,但只有源码,有些编译错误,看不懂,网上根本没有c语言的俄罗斯游戏教学(或者我没找着= =)。
我这篇保证是最简单的,最容易懂,也是最容易实现的控制台俄罗斯方块游戏。有人看到控制台的游戏就嗤之以鼻,没意思,不好玩。好不好玩,我不知道,
但我那时给我宿友玩,都在那里玩的不亦乐乎,问题是很有成就感。不信,可以在下面下载先试试。我这里也只是给出简单的实现,想要更好玩,得自己弄弄。
这里也说一下,每次更新速度可能不快,我看情况。原因是重新一步一步按想法写代码,改代码,让学习的人知道之所以然。
游戏界面原理
对于刚学c的同学来说,只知道控制台一行一行输出,那怎么能让一个个方块让我们看到方块运动游戏的效果呢?
我们看到屏幕就是一个二维,所以把它看成一个二维数组来,要想做出动态效果,我们要先做出静态效果,为什么这样说?
我举个栗子,大家应该看过电影,小学的时候有时候有电影放来看,那种胶片电影,都是一张一张胶片通过一定速度切换来达到动态的效果
所以我们只要不段刷新这个静态输出控制台界面就可以达到方块移动的效果
我们先来看看这个代码里的俄罗斯方块静态输出代码(下面这个代码可以直接跳过,因为这是完整代码里的输出片段,先不要纠结,只是引出后面的内容,因为我重写了代码,这个代码也不一定用到)
void Disp()
/* 输出 */
for ( i = 2; i & N; i++ )
printf( "%c", 3 );
for ( j = 0; j & M; j++ )
if ( s[i][j] == 0 )
printf( "■" );
printf( "%c", 3 );
if ( i == 6 )
%s", leixing[jishu - 1] );
if ( i == 8 )
%c%c%c", h[0][0], h[0][1], h[0][2] );
if ( i == 9 )
%c%c%c", h[1][0], h[1][1], h[1][2] );
if ( i == 10 )
%c%c%c", h[2][0], h[2][1], h[2][2] );
if ( i == 12 )
得分:%2d", fenshu );
printf( "\n" );
for ( i = 0; i & 2 * M + 2; i++ )
printf( "%c", 2 );
printf( "\n\n操作说明:4左移,6右移,5下移, 8变形,+加分数,7重来,9或Esc后退出\n" );
结合我开始的图片,有些人可能会看懂,看不懂也没关系,因为下面我还会详细来说这个东西,怎么详细呢
其实我也不知道,哈哈,因为按照这个代码本身并不好,所以等我理清一下思路,是重新一步一步的实现,还是就拿已经有的代码就这样讲解呢?
希望看的博友,给个意见,这个先写到这里。根据收到意见,我会继续写。
哦,我发现我是写个群友的,哈哈,然后连忙修改了,那就先给个下移的步骤
下面代码都是vs2013出来的,其他编译器改一下就ok了
#define intX 10
#define intY 20
int _tmain(int argc, _TCHAR* argv[])
//界面数组
char Interface[intY][intX] =
{ 0, 0, 0, 2, 2, 2 },
{ 0, 0, 0, 0, 2 },
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 },{ 0 }, { 0, 0, 0, 0 }, { 0 }
}; /*当前状态*/
for (i = 0; i & intY; i++)
printf("%c", 3);
for (j = 0; j & intX; j++)
if (Interface[i][j] == 0)
printf("■");
printf("%c", 3);
printf("\n");
for (i = 0; i & 2 * intX + 2; i++)
printf("%c", 2);
printf("\n");
上面是静态输出
把输出提取出来,弄成函数,要对代码不段改进,把特定功能提取出来做为调用函数
// c.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include &string.h&
#include&malloc.h&
#include&stdio.h&
#include&stdlib.h&
#include&math.h&
#define intX 10
#define intY 20
void show(char Interface[intY][intX])
for (i = 0; i & intY; i++)
printf("%c", 3);
for (j = 0; j & intX; j++)
if (Interface[i][j] == 0)
printf("■");
printf("%c", 3);
printf("\n");
for (i = 0; i & 2 * intX + 2; i++)
printf("%c", 2);
printf("\n");
int _tmain(int argc, _TCHAR* argv[])
//界面数组
char Interface[intY][intX] =
{ 0, 0, 0, 2, 2, 2 },
{ 0, 0, 0, 0, 2 },
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 },{ 0 }, { 0, 0, 0, 0 }, { 0 }
}; /*当前状态*/
show(Interface);
让方块下移
// c.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include &string.h&
#include&malloc.h&
#include&stdio.h&
#include&stdlib.h&
#include&math.h&
#define intX 10
#define intY 20
void show(char Interface[intY][intX])
for (i = 0; i & intY; i++)
printf("%c", 3);
for (j = 0; j & intX; j++)
if (Interface[i][j] == 0)
printf("■");
printf("%c", 3);
printf("\n");
for (i = 0; i & 2 * intX + 2; i++)
printf("%c", 2);
printf("\n");
int _tmain(int argc, _TCHAR* argv[])
//界面数组
char Interface[intY][intX] =
{ 0, 0, 0, 2, 2, 2 },
{ 0, 0, 0, 0, 2 },
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 },{ 0 }, { 0, 0, 0, 0 }, { 0 }
}; /*当前状态*/
int i = 0;
int j = 0;
while (true)
for (i = intY - 1; i &= 0; i--)
/* 继续下落 */
for (j = 0; j & intX; j++)
if (Interface[i][j] == 2)
Interface[i + 1][j] = Interface[i][j];
Interface[i][j] = 0; /*方块下移*/
show(Interface);
getchar();
/*getchar();*/
这篇先这样,之后会优化成不会换行,而直接刷新出游戏效果,欲知后文如何,请听下回分解
&有兴趣的可以先这样,给个提示:
上面清屏并非最好的,还有更好的,期待
http://pan.baidu.com/s/1kVu9SEV
密码:9mvj
阅读(...) 评论()

我要回帖

更多关于 c语言写俄罗斯方块 的文章

 

随机推荐