91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 13.93MB
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發布日期: 2023-06-26
  • 語言: 其他
  • 標簽: Qt??

資源簡介

這一節主要學習在Qt中怎樣使用圖形視圖框架,實驗完成的是一個簡易的俄羅斯方塊游戲,有了圖形視圖框架的支持,該游戲的設計變得非常簡單,不需要考慮很多復雜的算法,比如說方塊的碰撞檢測,旋轉,視圖的設計等。從本實驗中可以學到2D圖形的繪制,游戲的邏輯設計,圖形視圖的應用,動畫設置,背景音樂的添加,Phonon框架的應用等知識

資源截圖

代碼片段和文件信息

#include?“box.h“
#include?
#include?
#include?


//OneBox是從QGraphicsobject繼承而來的
OneBox::OneBox(const?QColor?&color)?:?brushColor(color)?{

}


//該函數為指定后面的繪圖區域的外邊框
QRectF?OneBox::boundingRect()?const?{

????qreal?pen_width?=?1;
????//小方塊的邊長為20.5像素
????return?QRectF(-10-pen_width/2?-10-pen_width/2?20+pen_width?20+pen_width);

}

void?OneBox::paint(QPainter?*painter?const?QstyleOptionGraphicsItem?*option?QWidget?*widget){

????//貼圖,看起來有質感否則單獨用顏色去看,會感覺那些方塊顏色很單一
????painter->drawPixmap(-10?-10?20?20?QPixmap(“:/images/box.gif“));
????painter->setBrush(brushColor);//設置畫刷顏色
????QColor?penColor?=?brushColor;
????penColor.setAlpha(20);//將顏色的透明度減小,使方框邊界和填充色直接能區分開
????painter->setPen(penColor);//色繪制畫筆
????//這里畫矩形框,框內填充部分用畫刷畫,框外線條用畫筆畫
????painter->drawRect(-10?-10?20?20);//畫矩形框
}


//在局部坐標點上返回item的shape但是好像沒有其它地方調用了該函數
QPainterPath?OneBox::shape()?const{

????//QPainterPath是一個繪圖操作的容器
????QPainterPath?path;
????path.addRect(-9.5?-9.5?19?19);
????return?path;
}


//BoxGroup是從QGraphicsItemGroup,Qobject繼承而來的
BoxGroup::BoxGroup()?{

????setFlags(QGraphicsItem::ItemIsFocusable);//允許設置輸入焦點
????old_transform?=?transform();//返回當前item的變換矩陣當BoxGroup進行旋轉后,可以使用它來進行恢復
????timer?=?new?QTimer(this);
????connect(timer?SIGNAL(timeout())?this?SLOT(move_one_step()));
????current_shape?=?RandomShape;
}


QRectF?BoxGroup::boundingRect()?const?{

????qreal?pen_width?=?1;
????return?QRectF(-40-pen_width/2?-40-pen_width/2?80+pen_width?80+pen_width);//2*2個小方塊組成一個小方塊組
}


void?BoxGroup::keyPressEvent(QKeyEvent?*event)?{

????switch(event->key())
????{
????????//向下鍵位墜落鍵
????????case?Qt::Key_Down:
????????????moveBy(0?20);//moveBy是系統自帶的函數,不需要我們自己去實現
????????????while(!isColliding())?{
????????????????moveBy(0?20);
????????????}
????????????moveBy(0?-20);//往回跳
????????????clear_box_group();//到達底部后就將當前方塊組的4個item移除不銷毀方塊組
????????????emit?need_new_box();//發射信號,在MyView中接收
????????????break;
????????case?Qt::Key_Left:
????????????moveBy(-20?0);
????????????if(isColliding())?{
????????????????moveBy(20?0);
????????????}
????????????break;
????????case?Qt::Key_Right:
????????????moveBy(20?0);
????????????if(isColliding())?{
????????????????moveBy(-20?0);
????????????}
????????????break;
?????????//實現小方塊組變形
?????????case?Qt::Key_Space:
????????????rotate(90);//方塊組的旋轉也不需要自己實現,Qt庫中自帶該方法
????????????if(isColliding())
????????????????rotate(-90);//變形后碰撞了,就逆向變形回去
????????????break;
????}
}


//檢測是否有碰撞
bool?BoxGroup::isColliding()?{

????QList?item_list?=?childItems();//返回子item列表
????QGraphicsItem?*item;
????foreach(item?item_list)?{
????????if(item->collidingItems().count()>1)//collidingItems返回與當前item碰撞的子item列表
????????????return?true;//代表至少有一個item發生了碰撞
????}
????return?false;
}


//將方塊組從視圖中移除掉,如果有需要(即參數為true的情況下)則銷毀掉
//其本質是將所有的小方塊從方塊組中移除掉,達到從視圖中將方塊組移除的目的
void?BoxGroup::clear_box_group(bool?destroy_box)?{

????

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????692345??2012-09-22?19:47??Qt學習之路_13(簡易俄羅斯方塊).pdf

?????文件???????7382??2012-09-21?17:23??tetris\box.cpp

?????文件???????1329??2012-09-21?11:42??tetris\box.h

?????文件?????912897??2011-07-17?16:29??tetris\images\background.png

?????文件?????709509??2011-07-17?13:39??tetris\images\background01.png

?????文件?????645354??2011-07-17?13:51??tetris\images\background02.png

?????文件???????1213??2011-07-17?11:41??tetris\images\box.gif

?????文件???????1116??2011-07-17?11:13??tetris\images\icon.png

?????文件???????7521??2011-03-17?17:09??tetris\images\logo.png

?????文件????????300??2012-09-21?01:13??tetris\images.qrc

?????文件????????743??2012-09-22?18:54??tetris\main.cpp

?????文件???????7073??2012-09-22?17:00??tetris\Makefile

?????文件???????7328??2012-09-22?17:00??tetris\Makefile.Debug

?????文件???????7415??2012-09-22?17:00??tetris\Makefile.Release

?????文件??????17037??2012-09-22?18:58??tetris\myview.cpp

?????文件???????1741??2012-09-22?17:00??tetris\myview.h

?????文件?????860812??2011-07-17?15:21??tetris\sounds\background.mp3

?????文件????2217638??2011-07-17?15:22??tetris\sounds\background01.mp3

?????文件????8664934??2011-07-17?16:02??tetris\sounds\background02.mp3

?????文件??????29217??2011-07-17?16:02??tetris\sounds\clearrow.mp3

?????文件????????154??2012-09-22?17:00??tetris\tetris.pro

?????文件??????17534??2012-09-22?19:47??tetris\tetris.pro.user

?????文件????1019904??2012-09-22?18:58??tetris\vc100.pdb

?????目錄??????????0??2012-09-22?19:47??tetris\images

?????目錄??????????0??2012-09-22?19:47??tetris\sounds

?????目錄??????????0??2012-09-22?19:47??tetris

-----------?---------??----------?-----??----

?????????????15830496????????????????????26


評論

共有 條評論