| from PyQt5.QtWidgets import QMainWindow, QPushButton, QLabel, QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QComboBox |
| from PyQt5.QtGui import QPixmap |
| from PyQt5.QtCore import Qt, QThread |
|
|
| class GameWindow(QMainWindow): |
| def __init__(self, game_logic, random_events_manager, item_generator, planet_data, player, save_load_manager, game_over_manager): |
| super().__init__() |
|
|
| |
| self.game_logic = game_logic |
| self.random_events_manager = random_events_manager |
| self.item_generator = item_generator |
| self.planet_data = planet_data |
| self.player = player |
| self.save_load_manager = save_load_manager |
| self.game_over_manager = game_over_manager |
|
|
| |
| self.init_ui() |
|
|
| def init_ui(self): |
| |
| self.setGeometry(100, 100, 800, 600) |
| self.setWindowTitle("Sci-Fi DrugWars Game") |
|
|
| |
| self.view = QGraphicsView(self) |
| self.view.setGeometry(10, 10, 600, 400) |
|
|
| |
| self.scene = QGraphicsScene() |
| self.view.setScene(self.scene) |
|
|
| |
| spaceship_image = QPixmap("spaceship.png") |
| spaceship_item = QGraphicsPixmapItem(spaceship_image) |
| self.scene.addItem(spaceship_item) |
|
|
| |
| start_button = QPushButton("Start Game", self) |
| start_button.setGeometry(10, 450, 100, 30) |
| start_button.clicked.connect(self.start_game_thread) |
|
|
| |
| self.info_label = QLabel(self) |
| self.info_label.setGeometry(10, 500, 300, 30) |
| self.update_info_label() |
|
|
| |
| self.planet_selector = QComboBox(self) |
| self.planet_selector.setGeometry(10, 490, 150, 30) |
| self.populate_planet_selector() |
|
|
| self.show() |
|
|
| def populate_planet_selector(self): |
| |
| planet_names = self.planet_data.get_planet_names() |
| self.planet_selector.addItems(planet_names) |
|
|
| def start_game_thread(self): |
| |
| game_thread = GameThread(self) |
| game_thread.start() |
|
|
| def update_info_label(self): |
| |
| cash = self.player.get_cash() |
| self.info_label.setText(f"Cash: ${cash}") |
|
|
| |
|
|
| class GameThread(QThread): |
| def __init__(self, game_window): |
| super().__init__() |
| self.game_window = game_window |
|
|
| def run(self): |
| |
| |
| |
|
|
| |
| self.game_window.game_logic.start_game() |
|
|
| |
| self.game_window.update_info_label() |
|
|