我罗斯方块汇报(1)

作业描述 详情
这个作业属于哪个课程 2020年面向对象程序设计
这个作业的要求在哪里 我罗斯方块汇报(1)
这个作业的目标 汇报自己这个阶段的开发进度。
作业正文 如下
参考资料 基于C实现双人俄罗斯方块 如何做一个超低配俄罗斯方块
项目地址 Github
小组成员 学号
卢浩玮 031902511
侯钦凯 031902505

开发进度

方块类(Block)除了碰撞测试外基本完成;

渲染类(render)还在学习中,目前略有成效,经过学习下一次应该就可以完成了;

游戏类(game)大致实现计时器功能,仍需要完善。

玩家类(player)还在学习中。
(详见GitHub)

开发难题

难题:方块初始化后不知道该做什么才能让地图有方块的坐标。
解决方法:只给方块最初始的坐标,然后左移右移下移都对该坐标进行改变,这个坐标的值为1,在地图中显示为方块,这样就解决了。(感觉很简单,但是做这个的人想了好久才想出来的。。。)

int	Block_1form_1[8]={1,0,1,1,2,0,2,1};//分为4行4列,左行右列;00 01 10 11
		int	Block_2form_1[8]={1,1,2,1,2,2,2,3};//01 11 12 13
		int	Block_2form_2[8]={1,1,1,2,2,1,3,1};//
		int	Block_2form_3[8]={1,2,2,0,2,1,2,2};//
		int	Block_2form_4[8]={3,1,3,2,2,2,1,2};//	 
		int	Block_3form_1[8]={0,2,1,0,1,1,1,2};//02 10 11 12
		int	Block_3form_2[8]={0,1,1,1,2,1,2,2};//
		int	Block_3form_3[8]={1,1,2,1,2,2,2,3};//
		int	Block_3form_4[8]={1,1,1,2,2,2,3,2};//
		int	Block_4form_1[8]={1,1,2,0,2,1,2,2};//11 20 21 22
		int	Block_4form_2[8]={1,1,2,1,3,1,2,2};//
		int	Block_4form_3[8]={2,0,2,1,2,2,3,1};//
		int	Block_4form_4[8]={1,1,1,2,1,3,0,2};//
		int	Block_5form_1[8]={2,0,2,1,1,1,1,2};//20 21 11 12
		int	Block_5form_2[8]={0,0,1,0,1,1,2,1};//
		int	Block_6form_1[8]={0,1,0,2,1,0,1,1};//21 22 10 11
		int	Block_6form_2[8]={0,1,1,1,2,0,2,1};//
		int	Block_7form_1[8]={1,0,1,1,1,2,1,3};//10 11 12 13
		int	Block_7form_2[8]={0,1,1,1,2,1,3,1};//

void block::start()
{
	memcpy(Block_now,Block_next,8*sizeof(int));
	for(int i=0;i<4;i++) {map[Block_now[2*i+1]][Block_now[2*i]]=1;}//下落中在地图表示为1 
}

难题:旋转方块这个函数难度有点大,也很复杂。
解决方法:不对7个初始的方块进行旋转,直接写19个初始方块,旋转变成旋转后的方块就好了。

void block::TurnBlock()//方块转变方向 
{
	switch(Block_form)
	{
		case 0: memcpy(Block_now,Block_1form_1,8*sizeof(int));break;
		case 1: memcpy(Block_now,Block_2form_2,8*sizeof(int));break;
		case 2: memcpy(Block_now,Block_2form_3,8*sizeof(int));break;
		case 3: memcpy(Block_now,Block_2form_4,8*sizeof(int));break;
		case 4: memcpy(Block_now,Block_2form_1,8*sizeof(int));break;
		case 5: memcpy(Block_now,Block_3form_2,8*sizeof(int));break;
		case 6: memcpy(Block_now,Block_3form_3,8*sizeof(int));break;
		case 7: memcpy(Block_now,Block_3form_4,8*sizeof(int));break;
		case 8: memcpy(Block_now,Block_3form_1,8*sizeof(int));break;
		case 9: memcpy(Block_now,Block_4form_2,8*sizeof(int));break;
		case 10: memcpy(Block_now,Block_4form_3,8*sizeof(int));break;
		case 11: memcpy(Block_now,Block_4form_4,8*sizeof(int));break;
		case 12: memcpy(Block_now,Block_4form_1,8*sizeof(int));break;
		case 13: memcpy(Block_now,Block_5form_2,8*sizeof(int));break;
		case 14: memcpy(Block_now,Block_5form_1,8*sizeof(int));break;
		case 15: memcpy(Block_now,Block_6form_2,8*sizeof(int));break;
		case 16: memcpy(Block_now,Block_6form_1,8*sizeof(int));break;
		case 17: memcpy(Block_now,Block_7form_2,8*sizeof(int));break;
		case 18: memcpy(Block_now,Block_7form_1,8*sizeof(int));break;
	}
	for(int i=0;i<4;i++) {map[Block_now[2*i+1]+y][Block_now[2*i]+x]=1;}
}

难题:不会用c++作图。
解决方法:在网上找到了easyX,里面还附带教程。

难题:用easyX做的主界面,但该怎么把我做的方块放里面呢?
解决方法:未解决。

难题:实时获取游戏开始后的运行时间。
解决方法:未解决。

开发日记

侯钦凯的开发日记

卢浩玮的开发日记

posted @ 2020-05-22 22:31  hqk111  阅读(185)  评论(2编辑  收藏  举报