开发日记

2020.5.17

作为一名低配c++程序员,我连渲染是什么都不知道,看见别的同学用c++画的示意图,我默默地去网上搜索教程了,查用windows.h绘图出来一些很奇怪的东西,然后去同学博客中的参考资料中找到了easyX,然后花了几个小时进行学习,还好里面自带教程,最后学会了怎么用c++画方框画直线这样的方法。还好俄罗斯方块本身需要的绘图水准不高,两个方框几行字加上方块就完成了。

#include <easyx.h>			// 引用图形库头文件
#include <conio.h>
#include<iostream>
#include<cstring>
int main()
{
	initgraph(1050, 780);	// 创建绘图窗口,大小为 1050x780 像素
	TCHAR s1[] = _T("score:");
	TCHAR s2[] = _T("Player1");
	TCHAR s3[] = _T("Player2");
	TCHAR s4[] = _T("Pause");
	TCHAR s5[] = _T("下一个方块");
	TCHAR s6[] = _T("W/↑:转向");
	TCHAR s7[] = _T("S/↓:加速");
	TCHAR s8[] = _T("A/←:左移");
	TCHAR s9[] = _T("D/←:右移");
	settextstyle(40, 10, s1);
	outtextxy(30, 110, s1);
	outtextxy(880, 110, s1);
	outtextxy(30, 30, s2);
	outtextxy(880, 30, s3);
	outtextxy(25, 300, s5);
	outtextxy(880,300, s5);
	outtextxy(480, 560, s4);
	outtextxy(470, 600, s6);
	outtextxy(470, 640, s7);
	outtextxy(470, 680, s8);
	outtextxy(470, 720, s9);
	rectangle(150, 40, 450, 550);
	rectangle(550, 40, 850, 550);
	rectangle(25, 350, 140, 450);
	rectangle(880, 350, 995, 450);

	_getch();//停顿
	return 0;
}

用这些代码写出了我罗斯方块的示意图!!!这只是游戏的一小步,但却是我的一大步!虽然看起来这些代码写得是有点蠢,以后技术提高会改进的。我在定义字符串时本来想用string的,但和函数库里的不符,用char[]也不行,后来查了好久,找到了TCHAR这个类型。

2020.5.21

我要写方块类,就找了很多俄罗斯方块的资料,看看他们是怎么初始化方块类的,但很多都看不懂,最终我找到了一个我能看懂的,他的做法是先把七个初始方块写出来,然后再写一个旋转的函数旋转他们,但我看着太复杂了,然后灵光一现,写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;}
}

我对坐标的概念还有点乱,用easyX做的主界面,但该怎么把我做的方块放里面呢?这个要思考一下。

posted @ 2020-05-22 14:33  hqk111  阅读(1535)  评论(0编辑  收藏  举报