int main() { srand(time(0)); //variables const int width = 700; const int height = 600; int points = 0; float velEnemy = 0.2; //font sf::Font font; if (!font.loadFromFile("Data/avaria.ttf")) return 0; //sound sf::SoundBuffer exploImage; if (!exploImage.loadFromFile("Data/explosion.wav")) return 0; sf::Sound destroy; destroy.setBuffer(exploImage); //enemy image sf::Texture alienImage; if (!alienImage.loadFromFile("Data/alien.png")) return 0; //enemy dead sf::Texture alienDead; if (!alienDead.loadFromFile("Data/alienExplo.png")) return EXIT_FAILURE; //ship image sf::Texture texture; if (!texture.loadFromFile("Data/ship.png")) return EXIT_FAILURE; sf::RectangleShape alien; alien.setTexture(&alienImage); alien.setSize(sf::Vector2f(50, 50)); alien.setPosition(150, 100); //bullet image sf::Texture bulletImage; if (!bulletImage.loadFromFile("Data/bullet.png")) return EXIT_FAILURE; //score sf::Text score; score.setFont(font); score.setPosition(10, height - 50); score.setString("Points : 0"); //end score sf::RenderWindow window(sf::VideoMode(width, height), "X1"); Player player1(width/2, height-50, texture); shoot shooter(bulletImage); shoot alienShoot(bulletImage); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { srand(time(nullptr)); if (event.type == sf::Event::Closed) window.close(); if (event.key.code == sf::Keyboard::Escape) window.close(); } //logic alien move if (alien.getPosition().x > width - 50) velEnemy = -0.2; if (alien.getPosition().x < 50) velEnemy = 0.2; //end logic window.clear(sf::Color::Black); std::stringstream text; bool go = false; text << "Player : " << points; score.setString(text.str()); window.draw(score); //logic for alien alien.setTexture(&alienImage); if (alien.getGlobalBounds().intersects(shooter.bullet.getGlobalBounds())) { alien.setPosition(1 + rand() % width, 100); points++; destroy.play(); alien.setTexture(&alienDead); Sleep(20); } //set player limits if (player1.rect.getPosition().x < 0) player1.rect.setPosition(0, player1.rect.getPosition().y); if (player1.rect.getPosition().x > width - 50) player1.rect.setPosition(width - 50, player1.rect.getPosition().y); alien.move(velEnemy, 0); window.draw(alien); if (player1.update()) { shooter.update(player1.rect.getPosition().x, player1.rect.getPosition().y, -3); window.draw(shooter.bullet); } window.draw(player1.rect); window.display(); } return 0; }
bool Game::cursesMain() { initscr(); noecho(); curs_set(FALSE); nodelay(stdscr, TRUE); keypad(stdscr,TRUE); srand(time(NULL)); // Coloring the screen start_color(); init_pair(1, COLOR_WHITE, COLOR_RED); // border init_pair(2, COLOR_GREEN, COLOR_GREEN); // barrier init_pair(3, COLOR_GREEN, COLOR_BLACK); // player init_pair(4, COLOR_RED, COLOR_BLACK); // boss // set up initial windows getmaxyx(stdscr, parent_y, parent_x); //set default space player.lives = 3; player.score = 0; player.x = 14; player.y = parent_y - (score_size + 3); WINDOW *field = newwin(parent_y - score_size, parent_x, 0, 0); WINDOW *score = newwin(score_size, parent_x, parent_y - score_size, 0); drawBorders(score); buildGame(board); int alienCount = 0; for(int i = 0; i < BOARDROWSIZE;i++) { for(int j = 0; j < BOARDCOLUMNSIZE;j++) { char temp = board[i][j]; wmove(field, i, j); waddch(field, temp); if(temp == ALIEN1 || temp == ALIEN2 || temp == ALIEN3) alienCount++; // mvwprintw(field, i, j, "%c", board[i][j]); } } numberOfAliens = alienCount; rawtime = time(NULL); alienGroup.waitTime = rawtime+8; // uncomment for cout // /* while(1) { getmaxyx(stdscr, new_y, new_x); if (new_y != parent_y || new_x != parent_x) { parent_x = new_x; parent_y = new_y; wresize(field, new_y - score_size, new_x); wresize(score, score_size, new_x); mvwin(score, new_y - score_size, 0); wclear(stdscr); wclear(field); wclear(score); drawBorders(score); } // board[20][18] = 'O'; // draw to our windows for(int i = 0; i < BOARDROWSIZE;i++) { for(int j = 0; j < BOARDCOLUMNSIZE;j++) { char piece = board[i][j]; // writeToFile("%c", piece); wmove(field, i, j); // check if our bullet should be seen if(board[i][j] == BULLET && player.bullet.enabled == true) waddch(field, board[i][j]); // if it shouldnt be seen then we remove it else if(board[i][j] == BULLET && player.bullet.enabled == false) { waddch(field, ' '); board[i][j] = ' '; wmove(field, i-1, j); waddch(field, ' '); board[i-1][j] = ' '; wmove(field, i, j); } // print everything else else { // color certain pieces switch(piece) { //border case '+': case '-': case '|': waddch(field, piece | COLOR_PAIR(1)); break; // barriers case '/': case '\\': case '#': waddch(field, piece | COLOR_PAIR(2)); break; //player case 'A': waddch(field, piece | COLOR_PAIR(3)); default: waddch(field, piece); } } } // writeToFile("\n"); } // Draw score board mvwprintw(score, 1, 2, "Score: "); mvwprintw(score, 1, 9, itoa(player.score, buffer, 10)); mvwprintw(score, 1, 70, "Lives: "); mvwprintw(score, 1, 77, itoa(player.lives, buffer, 10)); if(DEBUG == true) { string screensizex = itoa(new_x, buffer, 10); string screensizey = itoa(parent_y, buffer, 10); mvwprintw(score, 1, 30, "X: "); mvwprintw(score, 1, 34, screensizex.c_str()); mvwprintw(score, 1, 40, "Y: "); mvwprintw(score, 1, 44, screensizey.c_str()); } bool aliensMovement = true; aliensMovement = moveAliens(rawtime); alienShoot(); if(player.bullet.enabled == true) { if(player.bullet.direction == 'U') // safety check { timerCheck = clock()-timer; if(timerCheck > 15) { if(DEBUG == true) writeToFile("Current: %i,%i | New: %i,%i\n", player.bullet.x, player.bullet.y, player.bullet.x-1, player.bullet.y); char temp = board[player.bullet.x-1][player.bullet.y]; char temp2 = board[player.bullet.x-1][player.bullet.y+1]; switch(temp) { // all these will trigger the last case case 'S': case '@': case '%': case '&': case '#': case '/': case '\\': case '+': // most likely never reach here case '|': if(DEBUG == true) writeToFile("Collision with [%c]\n", temp); if(temp == ALIEN1) { player.score += 10; numberOfAliens--; } else if(temp == ALIEN2) { player.score += 20; numberOfAliens--; } else if(temp == ALIEN3) { player.score += 40; numberOfAliens--; } else if(temp == BOSS) { player.score += 150; } temp = ' '; temp2 = ' '; player.bullet.enabled = false; break; case '-': if(DEBUG == true) writeToFile("Bullet hits wall\n"); player.bullet.enabled = false; board[player.bullet.x][player.bullet.y] = ' '; break; default: // spaces and whatnot if(DEBUG == true) writeToFile("%i,%i = %c\n%i,%i\n",player.bullet.x,player.bullet.y-1,board[player.bullet.x][player.bullet.y],player.bullet.x,player.bullet.y); board[player.bullet.x-1][player.bullet.y] = BULLET; board[player.bullet.x][player.bullet.y] = ' '; player.bullet.x = player.bullet.x-1; break; } timer = clock(); } } } for(int x = 1;x<5;x++) { timerCheck = clock()-timer; if(timerCheck > 50) { char temp = ' '; switch(x) { case 1: temp = board[alienGroup.alienBullet1.x+1][alienGroup.alienBullet1.y]; if(alienGroup.alienBullet1.enabled == true) { switch(temp) { case '/': case '\\': case '#': temp = ' '; alienGroup.alienBullet1.enabled = false; board[alienGroup.alienBullet1.x][alienGroup.alienBullet1.y] = ' '; alienGroup.missles--; break; case 'A': player.lives--; board[player.x][player.y]= ' '; player.x = 14; player.y = parent_y - (score_size + 3); board[player.x][player.y] = PLAYER; alienGroup.missles--; break; case '-': if(DEBUG == true) writeToFile("Bullet hits wall\n"); alienGroup.alienBullet1.enabled = false; board[alienGroup.alienBullet1.x][alienGroup.alienBullet1.y] = ' '; alienGroup.missles--; break; default: if(DEBUG == true) writeToFile("%i,%i = %c\n%i,%i\n",player.bullet.x,player.bullet.y-1,board[player.bullet.x][player.bullet.y],player.bullet.x,player.bullet.y); board[alienGroup.alienBullet1.x+1][alienGroup.alienBullet1.y] = ALIENBULLET; board[alienGroup.alienBullet1.x][alienGroup.alienBullet1.y] = ' '; alienGroup.alienBullet1.x = alienGroup.alienBullet1.x+1; break; } /* if(temp == PLAYER) { player.lives--; player.x = 14; player.y = parent_y - (score_size + 3); board[player.x][player.y] = PLAYER; alienGroup.alienBullet1.enabled = false; alienGroup.missles--; } else if(temp == BARRIERCORNER1 || temp == BARRIERCORNER2 || temp == BARRIERMAIN) { temp = ' '; alienGroup.alienBullet1.enabled = false; alienGroup.missles--; } else if(temp == '-') { alienGroup.alienBullet1.enabled = false; alienGroup.missles--; } else { temp = BULLET; board[alienGroup.alienBullet1.x][alienGroup.alienBullet1.y] = ' '; alienGroup.alienBullet1.y += 1; }*/ } // case 2: // case 3: // case 4: default: break; } } } if(keyHit()) { key = getch(); keyChecker = keyCheck(key); if(keyChecker == true) break; // have code in CP } // refresh each window wrefresh(field); wrefresh(score); if(numberOfAliens == 0) break; } endwin(); // */ return true; }