⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toplevel.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    launchButtonText = tr("Select Key");#endif    view->showText( tr( "Press '%1'\nto start playing", "e.g. Select Key" ).	arg(launchButtonText), yellow );    setFocusPolicy( StrongFocus );}KAstTopLevel::~KAstTopLevel(){}void KAstTopLevel::keyPressEvent( QKeyEvent *event ){    if ( event->isAutoRepeat() || !actions.contains( event->key() ) )    {	event->ignore();        return;    }    havePress = TRUE;    Action a = actions[ event->key() ];    switch ( a )    {        case RotateLeft:            view->rotateLeft( TRUE );            break;        case RotateRight:            view->rotateRight( TRUE );            break;        case Thrust:            view->thrust( TRUE );            break;        case Shoot:            view->shoot( TRUE );            break;        case Shield:            view->setShield( TRUE );            break;        case Teleport:            view->teleport( TRUE );            break;        case Brake:            view->brake( TRUE );            break;        default:	    event->ignore();            return;    }    event->accept();}void KAstTopLevel::keyReleaseEvent( QKeyEvent *event ){    if ( event->isAutoRepeat() || !actions.contains( event->key() ) )    {        event->ignore();        return;    }    Action a = actions[ event->key() ];    switch ( a )    {        case RotateLeft:            view->rotateLeft( FALSE );            break;        case RotateRight:            view->rotateRight( FALSE );            break;        case Thrust:            view->thrust( FALSE );            break;        case Brake:            view->brake( FALSE );            break;        case Shield:            view->setShield( FALSE );            break;        case Teleport:            view->teleport( FALSE );            break;        case Shoot:#ifndef QTOPIA_PHONE            view->shoot( FALSE );            break;#else	    if ( !view->gameOver() && !waitShip ) {		view->shoot(FALSE);		break;	    }	    // rollover intended#endif        case Launch:	    if ( havePress && view->gameOver() ) {		slotNewGame();	    } else if ( havePress && waitShip ) {                view->newShip();                waitShip = FALSE;                view->hideText();#ifdef QTOPIA_PHONE		ContextBar::setLabel(this, Key_Select, "qasteroids/powerups/shoot", tr("Shoot") );		updateContext1();#endif            } else {                event->ignore();		havePress = FALSE;                return;            }            break;		case NewGame:	    slotNewGame();	    break;/*        case Pause:            {                view->pause( TRUE );                QMessageBox::information( this,                                          tr("KAsteroids is paused"),                                          tr("Paused") );                view->pause( FALSE );            }            break;*/        default:            event->ignore();	    havePress = FALSE;            return;    }    havePress = FALSE;    event->accept();}void KAstTopLevel::showEvent( QShowEvent *e ){    QMainWindow::showEvent( e );    view->pause( FALSE );    setFocus();}void KAstTopLevel::hideEvent( QHideEvent *e ){    QMainWindow::hideEvent( e );    view->pause( TRUE );}void KAstTopLevel::focusInEvent( QFocusEvent * ){    view->pause( FALSE );    setFocus();}void KAstTopLevel::focusOutEvent( QFocusEvent * ){    view->pause( TRUE );}void KAstTopLevel::slotNewGame(){#ifdef QTOPIA_PHONE    delete contextMenu;    contextMenu = 0;    ContextBar::setLabel(this, Key_Select, "qasteroids/powerups/shoot", tr("Shoot") );#endif    shipsRemain = 3;    score = 0;    scoreLCD->display( 0 );    level = 0;    levelLCD->display( level+1 );    shipsLCD->display( shipsRemain );    view->newGame();    view->setRockSpeed( levels[0].rockSpeed );    view->addRocks( levels[0].nrocks );    view->newShip();    waitShip = FALSE;    view->hideText();    isPaused = FALSE;}void KAstTopLevel::slotMissileFired(){    missileFired.play();}void KAstTopLevel::slotShipKilled(){    shipsRemain--;    shipsLCD->display( shipsRemain );    shipDestroyed.play();    if ( shipsRemain > 0 )    {        waitShip = TRUE;        view->showText( tr( "Ship Destroyed\nPress '%1'", "e.g. Select Key").arg(launchButtonText), yellow );    }    else    {        view->endGame();	doStats();    }#ifdef QTOPIA_PHONE    ContextBar::setLabel(this, Key_Select, "qasteroids/ship/ship0000", tr("Launch"));    ContextBar::clearLabel(this, Key_Context1);    if (!contextMenu)	contextMenu = new ContextMenu( this );#endif}void KAstTopLevel::slotRockHit( int size ){    switch ( size )    {	case 0:	    score += 10;	     break;	case 1:	    score += 20;	    break;	default:	    score += 40;      }    rockDestroyed.play();    scoreLCD->display( score );}void KAstTopLevel::slotRocksRemoved(){    level++;    if ( level >= MAX_LEVELS )	level = MAX_LEVELS - 1;    view->setRockSpeed( levels[level-1].rockSpeed );    view->addRocks( levels[level-1].nrocks );    levelLCD->display( level+1 );}void KAstTopLevel::doStats(){    QString r( "0.00" );    if ( view->shots() )	 r = QString::number( (double)view->hits() / view->shots() * 100.0,			     'g', 2 );    view->showText( tr( "GAME OVER\nPress '%1'\nfor a new game.", "%1 = e.g. Select Key" ).arg(launchButtonText), yellow, FALSE );}void KAstTopLevel::slotUpdateVitals(){    brakesLCD->display( view->brakeCount() );    shieldLCD->display( view->shieldCount() );    shootLCD->display( view->shootCount() );//    teleportsLCD->display( view->teleportCount() );    powerMeter->setValue( view->power() );    #ifdef QTOPIA_PHONE    updateContext1();#endif}#ifdef QTOPIA_PHONEvoid KAstTopLevel::updateContext1(){    static int lastLabel = -1;    int label = view->shieldCount() && view->power() ? 1 : 0;    if (label != lastLabel) {	if (label) {	    if(contextMenu) {		delete contextMenu;		contextMenu = 0;	    }	    ContextBar::setLabel(this, Key_Context1, "qasteroids/powerups/shield", tr("Shield"));	} else {	    ContextBar::clearLabel(this, Key_Context1);	    if(waitShip) {		if(!contextMenu)		    contextMenu = new ContextMenu(this);	    } else {		if(contextMenu) {		    delete contextMenu;		    contextMenu = 0;		}	    }	}	lastLabel = label;    }}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -