ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我罗斯方块最终篇2

2020-06-12 19:07:24  阅读:300  来源: 互联网

标签:textScore 代码 罗斯 最终 作业 curBlock void 方块


首先,我们想补交一下上次的作业

关于是如何艰难完成这次的作业:

①因为此次游戏目的是设计双人版的,所以我们打算先设计完单人版后再以此基础设计双人版的。
②在第一次的作业中,简述了完成此次作业相关的各类函数,但实操后发现事情并不简单...
③在最终完成的代码中,有以下几个我认为比较重要的函数

bool check()   //为了防止方块在合理的范围内移动的检查方块合法性的函数
void moveLeftRight(int offset)    //移动方块
void doRotate()  //旋转方块
void keyEvent(RenderWindow *window)   //给某个按键赋予功能性
void newBlock()   //随机获取一个新方块
void drawBlocks(Sprite *spriteBlock,RenderWindow *window)  //方块的体现
void drop()  //控制方块下落的函数
void clearLine() //在最后一行满行时消除此行

④我们的背景音乐很好听(超大声!!)

代码要点

我们遇到了哪些问题?(排名不分先后)

①背景图、边框和方块的像素处理问题

因为边框和方块的像素要成倍数关系,所以就比较困难。
第一次处理后我们的方块:

是不是还蛮搞笑的...

多次处理后我们的方块:

虽然还是没有很完美但是可以见人了!

②我觉得是写旋转方块的那个函数叭,因为要搞清楚旋转点就有、、难。

一开始我们写的代码是

void doRotate()  //旋转
{
	for (int i = 0; i < 4; i++)
	{
		BakBlock[i] = curBlock[i];
	}

	Point p = curBlock[1];

	for (int i = 0; i < 4; i++)
	{
		Point tmp = curBlock[i];
		curBlock[i].x = p.x - tmp.y + p.y;
		curBlock[i].y = tmp.x - p.x + p.y;
	}

运行以后发现七种方块中“田”字格的方块在按下旋转键后会小范围的走动,然后貌似此方块旋不旋转都是一个形态,所以就直接在函数体的开头限定了此方块的形态。

	if (blockIndex == 7)
	{
		return;
	}

加上后解决了这个问题。
③计算分数的问题,因为我们起初不知道怎么把消行和分数关联在一起,还有分数的显示之类的,后来有借鉴网络上的各种代码,最后弄出来惹。以下是我们的代码

void initScore()
{
	if (!font.loadFromFile("Sansation.ttf")) {
		exit(1);
	}
	textScore.setFont(font); 
	textScore.setCharacterSize(30);
	textScore.setFillColor(sf::Color::Black); 
	textScore.setStyle(sf::Text::Bold); 
	textScore.setPosition(1500, 200);
	textScore.setString("0");
}

如何把单人版变成双人版???

由单人变成双人,首先是在单人的界面框旁边加一个框,实在不知道怎么把另外一个框放在一个位置上,然后又突然定义的另外一个新的的方块在一个范围活动,就手动把另外一个框贴上去了。。试了很多遍,怎么产生双人的效果,先是,想着弄两个RenderWindow window,但是他出现的两个界面没办法同时进行按键检测,只能放弃。接着又想着重新定义一个按键检测的函数,进行两遍按键检测,但是不知道为什么,就只能检测到一个,可能是进去了就不出来了吧?最后不知道怎么的,最后,我试着把所有的按键检测放到一起,突然就可以了!!

代码的 git 仓库链接(https://github.com/cailiting/woels)

运行视频(https://www.bilibili.com/video/BV1Gg4y1q76z)

运行的截图

依然存在的问题

①只能手动结束游戏
②没有垃圾行这一功能
③页面缺少美观

收获与心得

虽然和其他同学比起来,我们的我罗斯真的哈哈哈哈哈哈哈哈“低一个档次”,我们在查看别的同学的作业时都惊呆了,太厉害了

标签:textScore,代码,罗斯,最终,作业,curBlock,void,方块
来源: https://www.cnblogs.com/wq031903139/p/13107828.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有