Exemple #1
0
//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()));
  
}
Exemple #4
0
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()));

}
Exemple #8
0
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);
  
}