资源简介
俄罗斯方块 SDL 版,游戏逻辑与 Qt 版完全一样,只是渲染引擎换成了 SDL。
Qt 版 : http://download.csdn.net/detail/sssooonnnggg/7053143
代码片段和文件信息
#include “Animation.h“
#include “base.h“
#include
#include
BlockAnimation::BlockAnimation(Renderer* renderer)
: Animation(renderer)
m_lastTickcount(GetTickCount())
m_start(true)
{
for ( int i = 0; i < 20; i++ )
{
Block* block = Block::CreateBlock(m_renderer Point(std::rand()%WindowWidth std::rand()%WindowHeight));
m_blockList.push_back(block);
}
InitBlockSpeed();
}
void BlockAnimation::InitBlockSpeed()
{
BlockList::iterator it = m_blockList.begin();
while ( it != m_blockList.end() )
{
//(*it)->Rotate(true);
int x = std::rand() % 21 - 10;
int y = std::rand() % 21 - 10;
(*it)->SetSpeed(Point(x y));
++it;
}
}
BlockAnimation::~BlockAnimation()
{
BlockList::iterator it = m_blockList.begin();
while ( it != m_blockList.end() )
{
delete (*it);
++it;
}
}
void BlockAnimation::Draw()
{
if ( m_start && OnframeChange() )
OnAnimationStep();
BlockList::iterator it = m_blockList.begin();
while ( it != m_blockList.end() )
{
(*it)->Draw();
++it;
}
}
bool BlockAnimation::OnframeChange()
{
if ( GetTickCount() - m_lastTickcount > 16 )
{
m_lastTickcount = GetTickCount();
return true;
}
return false;
}
void BlockAnimation::OnAnimationStep()
{
BlockList::iterator it = m_blockList.begin();
while ( it != m_blockList.end() )
{
Block* block = *it;
Point speed(block->GetSpeed());
Rect boundingRect(GetBlockBoundingRect(block));
if ( boundingRect.x < 0 )
speed.x = abs(speed.x);
if ( boundingRect.x + boundingRect.w > WindowWidth )
speed.x = -abs(speed.x);
if ( boundingRect.y < 0 )
speed.y = abs(speed.y);
if ( boundingRect.y + boundingRect.h > WindowHeight )
speed.y = -abs(speed.y);
(*it)->SetSpeed(speed);
(*it)->Move(speed);
++it;
}
}
Rect BlockAnimation::GetBlockBoundingRect(Block* block)
{
const BlockUnit* unit = block->GetFirstBlock();
int top = unit->y;
int left = unit->x;
int right = unit->x + unit->w;
int bottom = unit->y + unit->h;
while ( NULL != unit )
{
int ctop = unit->y;
int cleft = unit->x;
int cright = unit->x + unit->w;
int cbottom = unit->y + unit->h;
top = ctop < top ? ctop : top;
left = cleft < left ? cleft : left;
right = cright > right ? cright : right;
bottom = cbottom > bottom ? cbottom : bottom;
unit = block->GetNextBlock();
}
return Rect(left top right-left bottom-top);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 53784 2012-08-10 08:59 Tetris\Release\bg.png
文件 3241748 2002-10-29 20:17 Tetris\Release\FZYTK.TTF
文件 501760 2013-08-10 10:42 Tetris\Release\libfreetype-6.dll
文件 200704 2013-08-10 10:39 Tetris\Release\libpng16-16.dll
文件 880640 2013-10-23 21:07 Tetris\Release\SDL2.dll
文件 107520 2013-08-10 10:39 Tetris\Release\SDL2_image.dll
文件 52224 2013-08-10 10:42 Tetris\Release\SDL2_ttf.dll
文件 58880 2014-03-14 14:13 Tetris\Release\Tetris.exe
文件 123904 2013-08-10 10:39 Tetris\Release\zlib1.dll
文件 2496 2014-03-14 14:04 Tetris\Tetris\Animation.cpp
文件 773 2014-03-14 11:01 Tetris\Tetris\Animation.h
文件 3236 2014-03-14 10:02 Tetris\Tetris\ba
文件 1768 2014-03-12 14:44 Tetris\Tetris\EventHandler.cpp
文件 717 2014-03-12 14:24 Tetris\Tetris\EventHandler.h
文件 9402 2014-03-14 10:31 Tetris\Tetris\GameManager.cpp
文件 2367 2014-03-14 10:28 Tetris\Tetris\GameManager.h
文件 11834 2014-03-14 10:44 Tetris\Tetris\Gameob
文件 2735 2014-03-14 10:44 Tetris\Tetris\Gameob
文件 2476 2014-03-13 13:51 Tetris\Tetris\GameState.cpp
文件 2247 2014-03-13 13:51 Tetris\Tetris\GameState.h
文件 1573 2014-03-13 13:37 Tetris\Tetris\GameUI.cpp
文件 1178 2014-03-14 09:25 Tetris\Tetris\GameUI.h
文件 341 2014-03-13 13:29 Tetris\Tetris\main.cpp
文件 3776 2014-03-13 14:30 Tetris\Tetris\SDLRenderer.cpp
文件 2290 2014-03-14 09:30 Tetris\Tetris\SDLRenderer.h
文件 6156 2014-03-14 14:13 Tetris\Tetris\Tetris.vcproj
文件 1409 2014-03-14 14:26 Tetris\Tetris\Tetris.vcproj.ibm-PC.ibm.user
文件 1318 2014-03-11 16:50 Tetris\Tetris\UIManager.cpp
文件 485 2014-03-11 16:28 Tetris\Tetris\UIManager.h
文件 2100 2014-03-12 16:18 Tetris\Tetris\Utils.h
............此处省略8个文件信息
相关资源
- 基于Win socket简单实现一个FTP协议的客
- p2p 的简单实现 上传文件
- 数据结构实验课(全部题目+完整代码
- 哈夫曼树实现图片压缩与解压
- 车辆保险管理系统
- 算法导论第三版英文原版
- CTP接口及开发文档.zip
- VxWorks及Tornado集成开发环境的使用
- 炫彩界面库帮助文档chm-v2.5.0
- vc实用教程第三版+郑阿奇
- 嵌入式华清远见培训 ARM代码内部资料
- VLD For VS2019
- 网上鲜花销售系统完整代码
- Qt中嵌入Excel
- [8] ffmpeg + SDL2 实现的视频播放器「快
- VS2010写的连连看
- Clion+Qt 运行的
- 超市进销存管理系统需要数据库
- 一维信号的小波变换算法.rar
- Botan库 已经在windows下编译好的32位B
- 基于VS2008的可视化时钟
- 简易抽奖软件含源码
- opengl实现太阳系动态模型,地球,月
- [epub] 像程序员一样思考修订版
- glfw-3.2.1源码(需要自行编译)
- 广工信工图像处理作业
- opengl 实现的机器人行走
- 变网格步长声波方程有限差分数值模
- GMM模型实现
- Read_Ionex.rar
评论
共有 条评论