//Subroutine to initialize LCD for input and outpute //Inputs: none //Outputs: none //Notes:.. void LCDinit(void) { _delay_ms(40); LCDcom(0b00110000); _delay_ms(5); LCDcom(0b00110000); _delay_us(120); LCDcom(0b00110000); //choose setup MK _delay_ms(1); functionSet(0x10, 0x08, 0x00); displayControl(0, 0, 0); displayClear(); entryMode(0x02, 0); displayControl(0x04, 0, 0); }
void GameMainWindow::newGame() { gameController = new GameController(); startDialog = new StartDialog(this); this->setupConnections(); if(startDialog->exec() == QDialog::Accepted) { gameBoard = new GameBoard(this); connect(gameController, SIGNAL(triggerPlanetLocate(Planet*, int, int)), gameBoard, SLOT(onAddPlanet(Planet*, int, int))); connect(gameBoard, SIGNAL(changeTurn()), gameController, SLOT(onChangeTurn())); connect(gameController, SIGNAL(displayControl(QString)), gameBoard, SLOT(onDisplayControl(QString))); connect(gameController, SIGNAL(displayInfo(QString)), gameBoard, SLOT(onDisplayInfo(QString))); connect(gameController, SIGNAL(displayShipNumber()), gameBoard, SLOT(onDisplayShipNumber())); connect(gameBoard, SIGNAL(setFleetShipNumber(int)), gameController, SLOT(onSetFleetShipNumber(int))); gameController->onStartGame(); fleetAction->setEnabled(true); this->setCentralWidget(gameBoard); } else { delete gameController; } }
void GameController::onStartGame() { currentPlayer = 0; currentTurn = 1; this->populateMap(); emit displayControl(QString("<font color=%1>%2</font>:Select source planet").arg(players[currentPlayer]->getColor().name()).arg(players[currentPlayer]->getName())); }
PRIVATE void addRandomTile(MAKE_THIS(MainWindow)){ SELFREF_INIT; int x, y, value = rand() % 10 < 9 ? 2 : 4; /* Same condition as it original 2048 */ while (x = rand() % 4, y = rand() % 4, this->tiles[y][x]); this->tiles[y][x] = newTile(this->panel->moduleInstance, value, x, y); $(this->panel)_addChild((GUIObject)(this->tiles[y][x])); displayControl((Control)(this->tiles[y][x])); SendMessageA(this->tiles[y][x]->handle, WM_PAINT, (WPARAM)NULL, (LPARAM)NULL); /* Force repaint after the object has been created */ }
void GameController::onSetSelectPlanet(Planet* planet) { Fleet* fleet = NULL; /* on first selection and since last assumes that the vector is not empty */ if(fleets.isEmpty()) { fleet = new Fleet(); fleets.append(fleet); } fleet = fleets.last(); if(fleet->getSource() == NULL) /* selecting source */ { if(planet->getOwner() != players[currentPlayer]) /* if trying to choose a source planet that isn't yours */ return; planet->blink(); fleet->setSource(planet); fleet->setKillPercent(planet->getKillPercent()); fleet->setOwner(players[currentPlayer]); emit displayControl(QString("<font color=%1>%2</font>:Select destination planet").arg(players[currentPlayer]->getColor().name()).arg(players[currentPlayer]->getName())); } else if(fleet->getDestination() == NULL) /* selecting destination */ { if(fleet->getSource() == planet) /* source and destination are the same */ return; planet->blink(); fleet->setDestination(planet); emit displayShipNumber(); emit displayControl(QString("<font color=%1>%2</font>:Number of ships").arg(players[currentPlayer]->getColor().name()).arg(players[currentPlayer]->getName())); } }
void FrameInverter::process(unsigned char *src, unsigned char *dest) { if (src_format==FORMAT_GRAY) { for (int i=width*height;i>0;i--) { *dest++ = 255 - *src++; } } else { for (int i=width*height;i>0;i--) { *dest++ = (invert_red) ? (255 - *src++):*src++; *dest++ = (invert_green) ? (255 - *src++):*src++; *dest++ = (invert_blue) ? (255 - *src++):*src++; } if (show_settings) displayControl(); } }
void GameController::onSetFleetShipNumber(int ships) { Fleet* fleet = NULL; fleet = fleets.last(); fleet->getSource()->setShips(fleet->getSource()->getShips() - ships); fleet->setNumShips(ships); fleet->setKillPercent(fleet->getSource()->getKillPercent()); fleet->setArrivalTurn(currentTurn+2); fleet->getSource()->blink(); fleet->getDestination()->blink(); fleet = new Fleet(); fleets.append(fleet); emit displayControl(QString("<font color=%1>%2</font>:Select source planet").arg(players[currentPlayer]->getColor().name()).arg(players[currentPlayer]->getName())); }
Main::Main(Marsyas::MarSystem * system) { root_system = system; //qRegisterMetaType<Marsyas::MarSystem*>(); qmlRegisterType<MarSystemView>("Marsyas", 1, 0, "MarSystemView"); qmlRegisterType<MarSystemViewAttached>(); qmlRegisterType<MarSystemControlView>("Marsyas", 1, 0, "MarSystemControlView"); QQmlEngine *engine = new QQmlEngine(this); //engine->rootContext()->setContextProperty("myModel", QVariant::fromValue<QObject*>(model)); engine->rootContext()->setContextProperty("mySystem", QVariant::fromValue(system)); #if 0 QQmlComponent component(&engine, QString("main.qml")); if (component.status() != QQmlComponent::Ready) { qCritical("Not ready!"); return 1; } QObject *root_view = component.create(); if (!root_view) return 1; root_view->setProperty("model", QVariant::fromValue<QObject*>(model)); //root_view->setProperty("index"); //root_view->setProperty("text", QString::fromStdString(system->getPrefix())); QQuickWindow *window = new QQuickWindow(); root_view->setParent( window->contentItem() ); window->show(); #endif toolbar = new QToolBar(); QAction *tick_action = toolbar->addAction("Tick"); connect( tick_action, SIGNAL(triggered()), this, SLOT(tickSystem()) ); /////////////////// system_view = new QQuickView(engine, 0); system_view->setColor( QApplication::palette().color(QPalette::Window) ); system_view->setSource(QUrl::fromLocalFile("/home/jakob/programming/marsyas/src/qt5apps/inspector/main.qml")); system_view->setResizeMode(QQuickView::SizeRootObjectToView); QWidget *marsystem_widget = QWidget::createWindowContainer(system_view); marsystem_widget->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); controls_widget = new ControlsWidget; controls_widget->setSystem(system); //controls_widget->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); realvec_widget = new RealvecWidget; realvec_widget->setSystem(system); //realvec_widget->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); QObject::connect( controls_widget, SIGNAL(controlClicked(QString)), realvec_widget, SLOT(displayControl(QString)) ); QSplitter *data_splitter = new QSplitter(); data_splitter->setOrientation( Qt::Vertical ); data_splitter->addWidget( controls_widget ); data_splitter->addWidget( realvec_widget ); QSplitter *splitter = new QSplitter(); splitter->addWidget( marsystem_widget ); splitter->addWidget( data_splitter ); QVBoxLayout *column = new QVBoxLayout(); column->addWidget(toolbar); column->addWidget(splitter); QWidget *window = new QWidget(); window->setLayout(column); window->resize(1000, 600); window->show(); //window->showMaximized(); QObject *system_item = system_view->rootObject(); if (system_item) { QObject::connect( system_item, SIGNAL(clicked(QString)), this, SLOT(systemClicked(QString)) ); } else { qWarning("Could not find top system item!"); } QShortcut *quit_shortcut = new QShortcut(QString("Ctrl+Q"), splitter); QObject::connect( quit_shortcut, SIGNAL(activated()), qApp, SLOT(quit()) ); }
void GameController::onChangeTurn() { currentTurn++; /* impose production on owned planets */ for(int i=0; i<players.size(); i++) { Player* tempP = players[i]; for(int j=0; j<players[i]->getPlanets().size(); j++) { Planet* tempPl = tempP->getPlanets()[j]; tempPl->setShips( tempPl->getShips() + tempPl->getProduction()); } } for(int k=0; k<fleets.size(); k++) { Fleet* tempF = fleets[k]; /* fleet has arrived */ if(fleets[k]->getArrivalTurn() == currentTurn) { /* fleet owner same as destination owner, so reinforcing a planet */ if(tempF->getOwner() == tempF->getDestination()->getOwner()) { tempF->getDestination()->setShips(tempF->getDestination()->getShips() + tempF->getNumShips()); } else /* attacking planet */ { double attackScore, defenseScore; attackScore = tempF->getNumShips()*tempF->getKillPercent(); defenseScore = tempF->getDestination()->getShips()*tempF->getDestination()->getKillPercent(); if(attackScore >= defenseScore) /* attackers win */ { if(tempF->getDestination()->getOwner() != NULL) tempF->getDestination()->getOwner()->removeFromPlanets(tempF->getDestination()); tempF->getOwner()->addToPlanets(tempF->getDestination()); tempF->getDestination()->setOwner(tempF->getOwner()); tempF->getDestination()->setShips((int)attackScore-defenseScore); emit displayInfo(QString("Turn %1: Planet %2 has fallen to %3").arg(currentTurn).arg(tempF->getDestination()->getName()).arg(tempF->getOwner()->getName())); } else /* defense wins */ { tempF->getDestination()->setShips((int)defenseScore-attackScore); emit displayInfo(QString("Turn %1: Planet %2 has held against an attack from %3.").arg(currentTurn).arg(tempF->getDestination()->getName()).arg(tempF->getOwner()->getName())); } } /* processed fleet, so remove it */ fleets.removeAt(k); } } if(currentPlayer < players.size() - 1) currentPlayer++; else currentPlayer = 0; emit displayControl(QString("<font color=%1>%2</font>:Select source planet").arg(players[currentPlayer]->getColor().name()).arg(players[currentPlayer]->getName())); }
void LCD_Low_Level::begin(uint8_t columns, uint8_t rows, uint8_t dotsize) { if (rows > 1) { _display_function |= LCD_2Line; } if ((dotsize != LCD_5x8Dots) && (rows == 1)) { _display_function |= LCD_5x10Dots; } pinMode(_rs_pin, OUTPUT); pinMode(_rw_pin, OUTPUT); pinMode(_enable_pin, OUTPUT); // According to datasheet, we need at least 40ms after power rises above 2.7V // before sending commands. Wait 50ms to be safe. delayMicroseconds(50000); // Pull RS and RW low to begin sending commands digitalWrite(_rs_pin, LOW); digitalWrite(_rw_pin, LOW); // Put the LCD into 4 bit or 8 bit mode if (! (_display_function & LCD_8BitMode)) { // LCD starts in 8-bit mode. Try to set 4 bit mode write4bits(0x03); delayMicroseconds(4500); // wait min 4.1 ms // Second try write4bits(0x03); delayMicroseconds(4500); // wait min 4.1 ms // Third try write4bits(0x03); delayMicroseconds(150); // Fourth try will set the LCD to 4-bit interface write4bits(0x02); } else { // Send function set command sequence command(LCD_FunctionSet | _display_function); delayMicroseconds(4500); // wait more than 4.1 ms // Second try command(LCD_FunctionSet | _display_function); delayMicroseconds(150); // Third try command(LCD_FunctionSet | _display_function); } // Set # lines, font size, etc command(LCD_FunctionSet | _display_function); // turn the display on with no cursor or blinking default displayControl(LCD_DisplayOn, LCD_CursorOff, LCD_BlinkOn); // Clear the display clearDisplay(); // Initialize default text direction for romance language entrySetMode(LCD_CursorRight, LCD_DisplayLeft); }