用c++写的俄罗斯方块

博主在学习c++后,以俄罗斯方块作为练手项目,使用vs2012旗舰版和EasyX_20151015绘图库进行开发。尽管认为实现不够完美,但分享了开发过程中遇到的问题和经验,期待得到更多指导。
摘要由CSDN通过智能技术生成

由于刚学完c++,就选了俄罗斯方块当练手项目,完善还算可以,因此特写博客一篇,记录开发过程遇到的问题以及心得,特此分享

虽然感觉实现的不是很完美,但会继续完善,望大佬多多指教

开发工具:vs2012(旗舰版)

绘图库函数:EasyX_20151015(beta)

缺点:
(1)运行效率低
(2)感觉比较繁琐
(3)代码量太大
(4)可以尝试用多线程
(5)j界面比较繁琐,可以试着写用MFC 写(VC++ )
(6)针对于每一种方块的变换问题,我此处的方法比较繁琐,可以搜索资料进行坐标转化进行翻转

声明:写此游戏全部是靠自己思索解决每一个问题,比如,坐标转换,洁面控制,流程控制 ,以及
      对于类的继承和多态的使用,虽然比较繁琐,但是这是我思思维的结晶,后会再查些资料看看
      别人是如何实现的,应该肯定有更简单的实现方式

(1)头文件

#ifndef _TETRIS_H_
#define _TETRIS_H_
#define ROW 24//行数
#define CLO 14//列数

typedef struct pos//记录点的坐标的数据结构
{
	int x;
	int y;
}POSITION;

class Tetris10//第一种方块的类
{
protected :
	POSITION pos[4];
	int flag ;
public:
	 virtual void InitTetris();//初始化图形坐标  并且声明为虚函数
	 virtual void changePos();//当接到转换图形时,使图形旋转九度  并且声明为虚函数
	 void move();//控制移动
	 void change();//改变左右和变换图形的形状
	 bool isGetBottom();//判断是否到达底部
	 void show();//显示图形
	 bool IsStop();//是否要停止
	 void changeArr();//改变整个坐标
	 bool IsRight();//是否能上右移动
	 bool IsLeft();//是否能上左移动
	 void showBlack();//覆盖原来的图形
	 POSITION  getmaxPos();//得到每种图形的y坐标的最大值
};
class Tetris20:public Tetris10//第二种图形  继承第一种 下同
{
public:
	 virtual void InitTetris();
	 virtual void changePos();
};
class Tetris30:public Tetris10
{
public:
	 virtual void InitTetris();
	 virtual void changePos();
};
class Tetris40:public Tetris10
{
public:
	 virtual void InitTetris();
	 virtual void changePos();
};
class Tetris50:public Tetris10
{
public:
	 virtual void InitTetris();
	 virtual void changePos();
};
bool gameover();//判断是否游戏结束
void IsDelete();//当每一行满时,进行删除
#endif


主函数:

/*
作者:品大人
时间:2017  8    10   21:20
项目名称:俄罗斯方块
*/
#include <iostream>
#include <graphics.h>
#include <conio.h>
#include <time.h>
#include <stdl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值