博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
俄罗斯方块
阅读量:6826 次
发布时间:2019-06-26

本文共 2540 字,大约阅读时间需要 8 分钟。

      上学期看到学长写了一个贪吃蛇,就一直想要做一个不同的游戏,当时觉得写出来并不是不可能,可还是因为能力有限,很多东西都不懂,就放弃了这个想法。这学期还没开始,就一直心想着编一个俄罗斯方块出来,可是当我真正开始的时候,才发现没有那么简单,什么头绪也没有就开始凭着感觉去写。大干花了两个晚上的时间写了大概有100~200行代码,再回过头来去看那个贪吃蛇的代码,发现自己写的完全什么用也没有。没办法只有全部删掉,先研究研究再从头开始。

      在中途也碰到过很多问题,有一段时间就干脆不去管它,搁置了大概有一两周的时间,之后开始写才一点一点理清思路,写各种函数(由于对c++还算是没入门,只能用c语言写下去了),再考虑各种情况,再一点一点拼凑起来,总算是把他给摆平了。不过到现在也还是有各种BUG,还希望多多见谅。(实在是不好找错了)。没事了可以拿去玩一玩。还希望各位指出其中的BUG,容小菜再去改一改。。。

      从这500行的代码中,其实感觉自己也没用到什么新东西,不懂得直接调用别人的,其他的基本上都是FOR循环以及IF和ELSE,所以这不算什么学到很多新知识,但是有一点,就是从这么长的代码中明白一点,就是如何去管理这样长的代码:用容易理解的函数名以及变量名;各种函数的功能明确;如何去安排每个细节;然后就是一点一点耐心的调试,一边调试一边编写。。。。还是很有收获的!!!

游戏图片:(高手勿喷!!!)

 

 

代码

1 /*******************************/  2    /******Writer:   GJ      *******/  3    /******Language: C       *******/  4    /******Date:   2013 3 23 *******/  5    /*******************************/  6    #include
7 #include
8 //#include
9 #include
10 #include
11 #include
12 #include
13 using namespace std; 14 #define me(a) memset(a,0,sizeof(a)) 15 #define judge(bl,ok) for(i=0;i<5;i++)if(bl[i].x&&map[bl[i].x][bl[i].y])ok=0 16 #define is_pure(node,ok) if(map[node.x][node.y])ok=0 17 const int HEIGHT=24,LENGTH=40,SIDE=22; 18 19 char INIT_MAP[HEIGHT+1][LENGTH+1]; 20 int map[HEIGHT][SIDE]; 21 struct node{ int x,y;int color;}; 22 const int TIME_DWELL=1000; 23 int state=0; 24 25 /**********获取句柄**********/ 26 HANDLE Output=GetStdHandle(STD_OUTPUT_HANDLE); 27 HANDLE Input=GetStdHandle(STD_INPUT_HANDLE); 28 29 /**********设置光标位置**********/ 30 void SetCursor(int x,int y){ 31 COORD cd={x,y}; 32 SetConsoleCursorPosition(Output,cd); 33 } 34 35 /**************初始化图**************/ 36 void INITMAP() 37 { 38 for(int i=0;i
max)max=block[i].y;330 if(max+2>19)ok=0;331 for(i=0;i<5&&block[i].x;i++)if(block[i].x)332 if(map[block[i].x][block[i].y+2])ok=0;333 return ok;334 }335 336 /*********打印图**********/337 void print_map()338 {339 int i,j;340 me(INIT_MAP);341 for(i=0;i
1;i--){406 int ok=1;407 for(j=1;j
1;j--)for(int k=1;k
1;i--)416 for(int j=1;j
=5&&j<17)printf("%c",aa[t++]);441 else printf(" ");442 }443 }444 else for(j=4;j<18;j++){445 SetCursor(j,i);446 printf(" ");447 }448 }449 SetCursor(1,12);printf(" Enter To Continue. ");450 SetCursor(1,13);printf(" Esc To Escape. ");451 SetCursor(1,14);printf(" ");452 }453 return ok;454 }455 456 /*******游戏结束,再来一局,清理屏幕******/457 void Clear_map()458 {459 for(int i=22;i>0;i--)460 for(int j=1;j

 

 

转载于:https://www.cnblogs.com/gj-Acit/archive/2013/03/25/2979991.html

你可能感兴趣的文章
python连接数据库使用SQLAlchemy
查看>>
HAproxy和TIME WAIT的一次问题排查
查看>>
高效运维--数据库坐而论道活动
查看>>
pytorch怎么抽取中间的特征或者梯度
查看>>
visual studio用"查找替换"来删掉源代码中所有//方式的纯注释和空行
查看>>
Groovy
查看>>
滑动窗口的最大值
查看>>
[转]BT常用渗透命令
查看>>
面向.Net程序员的前端优化
查看>>
HTTPS到底是个什么鬼?
查看>>
Yii框架中ActiveRecord使用Relations
查看>>
leetcode 55.跳跃游戏
查看>>
flexPaper +swftools实现文档在线阅读
查看>>
分形树的绘制
查看>>
loadrunner请求中有汉字 如何编码
查看>>
java数据结构 • 面向对象 • 异常 • 随机数·时间
查看>>
springmvc 实现pc端手机端适配(同一个请求根据不同客户端展示不同界面)
查看>>
BTree和B+Tree详解
查看>>
VS2005工程迁移到Eclipse CDT
查看>>
Linux高端内存映射(上)【转】
查看>>