Exemplo n.º 1
0
/**
 * show the "you win" bitmap
 * wait 250ms
 * clear event stack
 * wait for an event
 */
void doGameWon() {
	SDL_Event event;

	resetField();

	drawImage(backgrounds[BG_BACK], 0, 0);
	drawImage(backgrounds[BG_WIN], 32, 192);
	refresh();
	SDL_Delay(250);
	while (SDL_PollEvent(&event));

	inGame = 1;
	frame = 0;
	while (inGame && !hasQuit) {
		frame++;
		while (SDL_PollEvent(&event)) {
			/*@ -usedef @*/
			if (event.type == SDL_QUIT) {hasQuit = 1;}
			if (event.type == SDL_KEYDOWN) {
				switch (event.key.keysym.sym) {
					case SDLK_ESCAPE: hasQuit = 1; break;
					default: inGame = 0; break;
				}
			}
			/*@ =usedef @*/
		}

		/* FIXME : Bounce some blocks around */
		refresh();
		SDL_Delay(1000 / 10);

		if(frame == 100) break;
	}
}
Exemplo n.º 2
0
void fileRead()
{
	int c;
	float x, y;

	resetField();

	fp = fopen("field.txt", "r");
	if(fp)
		File_Status = 1;
	else
		File_Status = 0;

	if(File_Status)
	{
		fscanf(fp, "%f,%f", &Ball_X, &Ball_Y);
		
		while((c = fscanf(fp, "%f,%f", &x, &y))!=EOF)
		{
			Active[Free_Pixel].x = x;
			Active[Free_Pixel].y = y;
			Free_Pixel++;
		}	
		fclose(fp);	
	}
	glutPostRedisplay();
	
}
Exemplo n.º 3
0
void keyboardSpecial(int key, int x, int y)
{
	switch(key)
	{
		case GLUT_KEY_F1:
			resetField();
			printf("Field cleared!\n");
			break;

		case GLUT_KEY_F2:
			fileWrite();
			printf("Field saved!\n");
			break;

		case GLUT_KEY_F3:
			fileRead();
			printf("Field loaded!\n");
			break;
	}
}
Exemplo n.º 4
0
GraphicBoard::GraphicBoard(int width, int height, QWidget *parent) :
    width(width),
    height(height),
    QWidget(parent)
{
    Language *language;
    QStringList langList;
    langList.push_back("Russian");
    langList.push_back("English");
    QString gameLang = QInputDialog::getItem(this, tr("Choose language of the game"), tr("Выберите язык игры"), langList);
    if (gameLang == "Russian"){
        language = new RussianLang;
    }
    else{
        language = new EnglishLang;
    }
    tableLayout = new QGridLayout;
    for (int i = 0; i < height; ++i) {
        buttons.push_back(QVector<ButtonCell*>(width));
        for (int j = 0; j < width; ++j) {
            buttons[i][j] = new ButtonCell(language);
            buttons[i][j]->connectToPanel(this);
            tableLayout->addWidget(buttons[i][j], i, j);
        }
    }
    gamePanel = new QHBoxLayout(this);
    gameBoardPanel = new QVBoxLayout;
    gameBoardPanel->addLayout(tableLayout);
    wordPanel = new QHBoxLayout;
    currentWord = new QLabel("");
    commitButton = new QPushButton("Enter!");
    commitGiveUp = new QPushButton("Give Up");
    wordPanel->addWidget(commitGiveUp);
    wordPanel->addWidget(currentWord);
    wordPanel->addWidget(commitButton);
    gameBoardPanel->addLayout(wordPanel);


    firstPlayerScore = new QLabel(tr("0"), this);
    firstPlayerWords = new QListWidget(this);
    firstPlayerPanel = new QVBoxLayout(this);
    firstPlayerPanel->addWidget(firstPlayerScore);
    firstPlayerPanel->addWidget(firstPlayerWords);

    secondPlayerScore = new QLabel(tr("0"), this);
    secondPlayerWords = new QListWidget(this);
    secondPlayerPanel = new QVBoxLayout(this);
    secondPlayerPanel->addWidget(secondPlayerScore);
    secondPlayerPanel->addWidget(secondPlayerWords);

    gamePanel->addLayout(firstPlayerPanel);
    gamePanel->addLayout(gameBoardPanel);
    gamePanel->addLayout(secondPlayerPanel);

    setLayout(gamePanel);

    int players = QInputDialog::getInt(this, tr("Enter number of players"), tr("Введите число игроков"), 1, 1, 2);
    if (players == 2) {
        gameManager = new GameManager(language, width, height, players);
    } else {
        QStringList list;
        list.push_back(tr("EASY"));
        list.push_back("MEDIUM");
        list.push_back(tr("HARD"));
        list.push_back("HARDEST");
        QString level = QInputDialog::getItem(this, tr("Choose level"), tr("Выберите сложность"), list);
        gameManager = new GameManager(language, width, height, players, level);
    }
    connectToPlayers(gameManager->getFirstPlayer(), gameManager->getSecondPlayer());
    gameManager->getFirstPlayer()->connectToInterface(this);
    gameManager->getSecondPlayer()->connectToInterface(this);
    QString word = gameManager->getFirstWord();
    for (int i = 0; i < width; ++i) {
        buttons[height/2][i]->setText(QString(word[i]));
    }

    for (int i = 0; i < width; ++i) {
        buttons[height/2][i]->setMenu(NULL);
    }

    connect(commitButton, SIGNAL(clicked()), this, SLOT(onCommitButtonClicked()));
    connect(commitGiveUp, SIGNAL(clicked()), this, SLOT(onCommitGiveUpClicked()));


    connect(gameManager, SIGNAL(gameEnded(const QString&)),
            this, SLOT(finishGame(const QString&)));
    connect(this, SIGNAL(quit()), parent, SLOT(resetField()));
}
Exemplo n.º 5
0
/**
 * show the "game over" bitmap
 * wait 250ms
 * clear event stack
 * wait for an event
 */
void doGameLost() {
	SDL_Event event;
	SDL_Surface *hiMsg;
	char hiText[64];
	char name[64] = "";
	int namePos = 0, hiPos = 0, needUpdate = 0;

	resetField();

	/* check for hiscore */
	for(hiPos=0; hiPos<MAX_HISCORES; hiPos++) {
		if(state->score > hiscores[hiPos].score) {
			needUpdate = 1;
			break;
		}
	}

	drawImage(backgrounds[BG_BACK], 0, 0);
	drawImage(backgrounds[BG_LOSE], 32, 192);

	/* clear events */
	while (SDL_PollEvent(&event));

	inGame = 1;
	frame = 0;
	while (inGame && !hasQuit) {
		frame++;
		while (SDL_PollEvent(&event)) {
			/*@ -usedef @*/
			if(event.type == SDL_QUIT) {hasQuit = 1;}
			if(event.type == SDL_KEYDOWN) {
				if(hiPos < MAX_HISCORES) {
					if(event.key.keysym.sym >= SDLK_a && event.key.keysym.sym <= SDLK_z) {
						if(namePos < 8) {
							name[namePos++] = event.key.keysym.sym;
							name[namePos] = 0;
							needUpdate = 1;
						}
					}
					else {
						switch (event.key.keysym.sym) {
							case SDLK_RETURN:
								addHiScore(name, state->score, state->level);
								inGame = 0;
								break;
							case SDLK_BACKSPACE:
								if(namePos > 0) name[--namePos] = 0;
								needUpdate = 1;
								break;
							default:
								break;
						}
					}
				}
				else if(event.type == SDL_KEYDOWN) {
					inGame = 0;
				}
			}
			/*@ =usedef @*/
		}

		if(hiPos < MAX_HISCORES && needUpdate) {
			drawImage(backgrounds[BG_BACK], 0, 0);
			drawImage(backgrounds[BG_LOSE], 32, 192);
			sprintf(hiText, "New Hiscore: %i points!", state->score);
			drawImage(hiMsg = TTF_RenderText_Blended(fonts[FONT_SCORE], hiText, black), 100, 300);
			SDL_FreeSurface(hiMsg);
			sprintf(hiText, "Enter Name: %s", name);
			drawImage(hiMsg = TTF_RenderText_Blended(fonts[FONT_SCORE], hiText, black), 100, 332);
			SDL_FreeSurface(hiMsg);
			needUpdate = 0;
		}

		/* FIXME : Bounce some blocks around */
		refresh();
		SDL_Delay(1000 / 10);
	}
}
Exemplo n.º 6
0
void AdjQueryDlg::lev3Changed(const QString&)
{
  mw->verify->setDefault(true);
  resetField (mw->lev3Field);
}
Exemplo n.º 7
0
void AdjQueryDlg::resetAllFields()
{
  resetField(mw->lev1Field);
  resetField(mw->lev2Field);
  resetField(mw->lev3Field);
}