def __init__(self): ShowBase.__init__(self) # создаём менеджер карты self.map_manager = MapManager() # создаём контроллер мышки и клавиатуры self.controller = Controller() # создаём редактор self.editor = Editor(self.map_manager) # загружаем картинку курсора pointer = OnscreenImage(image='target.png', pos=(0, 0, 0), scale=0.08) # устанавливаем прозрачность pointer.setTransparency(TransparencyAttrib.MAlpha) # имя файла для сохранения и загрузки карт self.file_name = "my_map.dat" self.accept("f1", self.basicMap) self.accept("f2", self.generateRandomMap) self.accept("f3", self.saveMap) self.accept("f4", self.loadMap) print("'f1' - создать базовую карту") print("'f2' - создать случайную карту") print("'f3' - сохранить карту") print("'f4' - загрузить карту") # генерируем случайный уровень self.generateRandomMap()
def __init__(self): self.window = Window(Game.WINDOW_WIDTH, Game.WINDOW_HEIGHT) self.window.set_title(Game.TITLE) self.keyboard = self.window.get_keyboard() self.mouse = self.window.get_mouse() self.dir = path.dirname(__file__) self.background = Sprite(Game.BACKGROUND_PATH) self.logo = Sprite(Game.LOGO_PATH) self.fade = Sprite(Game.FADE_PATH) self.action = Sprite(Game.ACTION_PATH) self.logo.x = self.window.width / 2 - self.logo.width / 2 self.logo.y = 100 self.action.x = self.window.width / 2 - self.action.width / 2 self.action.y = self.window.height / 2 + self.action.height self.isGameStarted = False self.descentSpeed = DEFAULT_DESCENT_SPEED = 80 self.highScore = self.readHighScore() self.score = 0 self.mapManager = MapManager(self) self.mapManager.init() self.player = Player(self)
def stop(self): self.isGameStarted = False self.descentSpeed = DEFAULT_DESCENT_SPEED = 80 if (self.score > self.highScore): self.highScore = self.score self.writeHighScore() self.score = 0 self.player = Player(self) self.mapManager = MapManager(self) self.mapManager.init()
def __init__(self): ShowBase.__init__(self) # режим редактирования self.edit_mode = True # создаём менеджер карты self.map_manager = MapManager() # создаём контроллер мышки и клавиатуры self.controller = Controller() # создаём редактор self.editor = Editor(self.map_manager) # загружаем картинку курсора self.pointer = OnscreenImage(image='target.png', pos=(0, 0, 0), scale=0.08) # устанавливаем прозрачность self.pointer.setTransparency(TransparencyAttrib.MAlpha) # имя файла для сохранения и загрузки карт self.file_name = "my_map.dat" self.accept("f1", self.basicMap) self.accept("f2", self.generateRandomMap) self.accept("f3", self.saveMap) self.accept("f4", self.loadMap) print("'f1' - создать базовую карту") print("'f2' - создать случайную карту") print("'f3' - сохранить карту") print("'f4' - загрузить карту") # зарегистрируйте на события нажатия клавиш # "0", "1", "2" ... "9" метод установки цвета # ... self.accept("z", self.map_manager.settex) self.accept("x", self.map_manager.tchange) self.accept("1", self.setcolor, [(1, 1, 1, 1)]) self.accept("2", self.setcolor, [(0.3, 1, 0.3, 1)]) #self.accept("3",self.setcolor,[()]) base.accept("tab", self.switchEditMode) # генерируем случайный уровень self.generateRandomMap()
class Config: # self.service_lock = False # self.curr_process = None # one of None, 'slam', or 'amcl' map_mgr = MapManager() pose_svr = PoseServer() map_name = None # at least one of these should be None at all times amcl_process = None slam_process = None
def __init__(self): ShowBase.__init__(self) # режим редактирования self.edit_mode = True # создаём менеджер карты self.map_manager = MapManager() # создаём контроллер мышки и клавиатуры self.controller = Controller() # создаём редактор self.editor = Editor(self.map_manager) # загрузка модели sky = loader.loadModel('sky/skybox') # перемещаем модель в рендер sky.reparentTo(render) # устанавливаем масштаб и позицию для модели sky.setScale(100) # загружаем картинку курсора self.pointer = OnscreenImage(image='target.png', pos=(0, 0, 0), scale=0.08) # устанавливаем прозрачность self.pointer.setTransparency(TransparencyAttrib.MAlpha) # имя файла для сохранения и загрузки карт self.file_name = "testmap.dat" # номер строки для текста на экране self.text_row = 1 # вывод на экран инструкций self.addInstructions("[Tab]: Edit/Game mode") self.addInstructions("Move mouse: Rotate camera") self.addInstructions("Left mouse button: Add block") self.addInstructions("Right mouse button: Remove block") self.addInstructions("[W]: Move Forward") self.addInstructions("[S]: Move Back") self.addInstructions("[A]: Move Left") self.addInstructions("[D]: Move Right") self.addInstructions("[E]: Move Up") self.addInstructions("[Q]: Move Down") self.addInstructions("[Space]: Jump") self.addInstructions("[F1]: Basic map") self.addInstructions("[F2]: Random map") self.addInstructions("[F3]: Save map") self.addInstructions("[F4]: Load map") self.addInstructions("[1-8]: Select color") self.addInstructions("Press ESC to exit") # элемент текста оповещений self.infoText = OnscreenText(text='', scale=0.06, fg=(1, 1, 1, 1), shadow=(0, 0, 0, 1), align=TextNode.ALeft, parent=base.a2dBottomLeft, pos=(0.08, 0.08)) self.accept("f1", self.basicMap) self.accept("f2", self.generateRandomMap) self.accept("f3", self.saveMap) self.accept("f4", self.loadMap) self.accept("1", self.setColor, [(1, 1, 1, 1), 'white']) self.accept("2", self.setColor, [(1, 0.3, 0.3, 1), 'red']) self.accept("3", self.setColor, [(0.3, 1, 0.3, 1), 'green']) self.accept("4", self.setColor, [(0.3, 0.3, 1, 1), 'blue']) self.accept("5", self.setColor, [(1, 1, 0.3, 0.5), 'yellow']) self.accept("6", self.setColor, [(0.3, 1, 1, 0.5), 'aqua']) self.accept("7", self.setColor, [(1, 0.3, 1, 0.5), 'purple']) self.accept("8", self.setColor, [None, 'random']) base.accept("tab", self.switchEditMode) self.setInfoText('') self.setColor(None, 'random') # генерируем случайный уровень self.generateRandomMap()
class Game(ShowBase): def __init__(self): ShowBase.__init__(self) # режим редактирования self.edit_mode = True # создаём менеджер карты self.map_manager = MapManager() # создаём контроллер мышки и клавиатуры self.controller = Controller() # создаём редактор self.editor = Editor(self.map_manager) # загружаем картинку курсора self.pointer = OnscreenImage(image='target.png', pos=(0, 0, 0), scale=0.08) # устанавливаем прозрачность self.pointer.setTransparency(TransparencyAttrib.MAlpha) # имя файла для сохранения и загрузки карт self.file_name = "my_map.dat" self.accept("f1", self.basicMap) self.accept("f2", self.generateRandomMap) self.accept("f3", self.saveMap) self.accept("f4", self.loadMap) print("'f1' - создать базовую карту") print("'f2' - создать случайную карту") print("'f3' - сохранить карту") print("'f4' - загрузить карту") # зарегистрируйте на события нажатия клавиш # "0", "1", "2" ... "9" метод установки цвета # ... self.accept("z", self.map_manager.settex) self.accept("x", self.map_manager.tchange) self.accept("1", self.setcolor, [(1, 1, 1, 1)]) self.accept("2", self.setcolor, [(0.3, 1, 0.3, 1)]) #self.accept("3",self.setcolor,[()]) base.accept("tab", self.switchEditMode) # генерируем случайный уровень self.generateRandomMap() def basicMap(self): if not self.edit_mode: self.controller.setEditMode(self.edit_mode) self.map_manager.basicMap() print('Basic map generated') def generateRandomMap(self): if not self.edit_mode: self.controller.setEditMode(self.edit_mode) self.map_manager.generateRandomMap() print('Random map generated') def saveMap(self): self.map_manager.saveMap(self.file_name) print('Map saved to "' + self.file_name + '"') def loadMap(self): if not self.edit_mode: self.controller.setEditMode(self.edit_mode) self.map_manager.loadMap(self.file_name) print('Map loaded from "' + self.file_name + '"') # добавьте метод установки цвета # ... def setcolor(self, color): if self.edit_mode: self.map_manager.setColor(color) # если установлен режим редактирования # ... # вызовите метод setColor менеджера карты # ... def switchEditMode(self): self.edit_mode = not self.edit_mode self.controller.setEditMode(self.edit_mode) self.editor.setEditMode(self.edit_mode) if self.edit_mode: self.pointer.setImage(image='target.png') else: self.pointer.setImage(image='target1.png') self.pointer.setTransparency(TransparencyAttrib.MAlpha)
class Game: WINDOW_WIDTH = 1280 WINDOW_HEIGHT = 720 TITLE = 'Project Mountain v1.0.0' DEBUG = 0 SAVE_PATH = 'save.txt' BACKGROUND_PATH = 'assets/bg.png' LOGO_PATH = 'assets/logo.png' FADE_PATH = 'assets/fade.png' ACTION_PATH = 'assets/action.png' GROUND_X = -10 GROUND_Y = 710 DEFAULT_DESCENT_SPEED = 100 DESCENT_FACTOR = 2 MAX_DESCENT_SPEED = 180 def __init__(self): self.window = Window(Game.WINDOW_WIDTH, Game.WINDOW_HEIGHT) self.window.set_title(Game.TITLE) self.keyboard = self.window.get_keyboard() self.mouse = self.window.get_mouse() self.dir = path.dirname(__file__) self.background = Sprite(Game.BACKGROUND_PATH) self.logo = Sprite(Game.LOGO_PATH) self.fade = Sprite(Game.FADE_PATH) self.action = Sprite(Game.ACTION_PATH) self.logo.x = self.window.width / 2 - self.logo.width / 2 self.logo.y = 100 self.action.x = self.window.width / 2 - self.action.width / 2 self.action.y = self.window.height / 2 + self.action.height self.isGameStarted = False self.descentSpeed = DEFAULT_DESCENT_SPEED = 80 self.highScore = self.readHighScore() self.score = 0 self.mapManager = MapManager(self) self.mapManager.init() self.player = Player(self) def readHighScore(self): data = None try: file = open(path.join(self.dir, Game.SAVE_PATH), 'r') data = int(file.read()) file.close() except: data = 0 return data def writeHighScore(self): try: file = open(path.join(self.dir, Game.SAVE_PATH), 'w') file.write(str(self.highScore)) file.close() except: return def stop(self): self.isGameStarted = False self.descentSpeed = DEFAULT_DESCENT_SPEED = 80 if (self.score > self.highScore): self.highScore = self.score self.writeHighScore() self.score = 0 self.player = Player(self) self.mapManager = MapManager(self) self.mapManager.init() def tick(self): self.background.draw() self.mapManager.tick() self.player.tick() if (self.isGameStarted): if (self.score > 0): self.player.descend(self.descentSpeed) self.mapManager.descend(self.descentSpeed) if (self.keyboard.key_pressed('ESC')): self.stop() self.window.draw_text("PONTUAÇÃO: {}".format(self.score), 0, 0, 16, (251, 242, 54), "Arial", True) else: self.fade.draw() self.logo.draw() self.action.draw() self.window.draw_text( "PONTUAÇÃO MÁXIMA: {}".format(self.highScore), Game.WINDOW_WIDTH / 2 - 160, Game.WINDOW_HEIGHT / 2, 24, (251, 242, 54), "Arial", True) if (self.keyboard.key_pressed('SPACE')): self.isGameStarted = True self.window.update()