def __init__(self, parent=None): super().__init__(parent) self.setObjectName("miniMapDock") self.mMiniMap = MiniMap(self) self.setWidget(self.mMiniMap) self.retranslateUi()
def __init__(self, parent = None): super().__init__(parent) self.setObjectName("miniMapDock") self.mMiniMap = MiniMap(self) self.setWidget(self.mMiniMap) self.retranslateUi()
class MiniMapDock(QDockWidget): def __init__(self, parent=None): super().__init__(parent) self.setObjectName("miniMapDock") self.mMiniMap = MiniMap(self) self.setWidget(self.mMiniMap) self.retranslateUi() def setMapDocument(self, map): self.mMiniMap.setMapDocument(map) def changeEvent(self, e): super().changeEvent(e) x = e.type() if x == QEvent.LanguageChange: self.retranslateUi() else: pass def retranslateUi(self): self.setWindowTitle(self.tr("Mini-map"))
class MiniMapDock(QDockWidget): def __init__(self, parent = None): super().__init__(parent) self.setObjectName("miniMapDock") self.mMiniMap = MiniMap(self) self.setWidget(self.mMiniMap) self.retranslateUi() def setMapDocument(self, map): self.mMiniMap.setMapDocument(map) def changeEvent(self, e): super().changeEvent(e) x = e.type() if x==QEvent.LanguageChange: self.retranslateUi() else: pass def retranslateUi(self): self.setWindowTitle(self.tr("Mini-map"))
def main(env_array, env_string, texture_map, wall='#'): last_key = None # If resolution is 12, each 3D column will be 12 units long env_index_width = len(env_array[0]) env_index_height = len(env_array) screen_width_resolution = 12 screen_height_resolution = 12 screen_width = env_index_width * screen_width_resolution screen_height = env_index_height * screen_height_resolution # Player Attributes (Angles in Degrees) player = Player(24.0, 12.0, 0) map = MiniMap(env_array) while last_key != 'QUIT': new_key = get_keys() player.key_input(new_key) # # RAY TRACING # # Determine distances to objects in player field # each distance until ray touched an object will determine 1 full column drawn distances = [] ray_count = 140 ray_angle_incrementation = player.visual_field_degrees / ray_count ray_distance_incrementation = 2 ray_max_dist = screen_width for ray_num in range(ray_count): ray_x = player.x ray_y = player.y ray_angle = (player.angle - (player.visual_field_degrees / 2) + (ray_angle_incrementation * ray_num)) # Increment the rays length until a collision ray_distance = 0 while True: ray_index_x = int(ray_x // screen_width_resolution) ray_index_y = int(ray_y // screen_height_resolution) # If we hit a wall, determine distance we traveled if ray_index_x >= env_index_width: ray_index_x = env_index_width - 1 if ray_index_y >= env_index_height: ray_index_y = env_index_height - 1 if ray_distance >= ray_max_dist: distances.append(ray_max_dist) break elif env_array[ray_index_y][ray_index_x] == wall: distances.append(ray_distance) break else: ray_distance += ray_distance_incrementation ray_angle_radians = math.radians(ray_angle) ray_x += math.cos(ray_angle_radians) * ray_distance ray_y += math.sin(ray_angle_radians) * ray_distance # # SCREEN RENDERING # # Now we have an array of distances (@array distances) for each array # each distance in the array represents a column player_vision = generate_player_vision(distances, texture_map, ray_max_dist, screen_height_resolution, screen_height) last_key = new_key try: # Widnows os.system('cls') except Exception as e: # Mac os.system('clear') # Display player on map player_cord_x, player_cord_y = player.get_index( screen_width_resolution, screen_height_resolution) map_bytes = map.get_minimap(player_cord_x, player_cord_y, player.angle) player_vision += map_bytes player_vision += bytes(str(map.arrow_angle), 'utf-8') sys.stdout.buffer.write(player_vision) sys.stdout.flush()
def addMiniMap( self ): self.miniMap = MiniMap( self, 160, 120 ) self.addSprite( self.miniMap )
class MenuState: """The MenuState class. Generally serves two purposes:\n""" \ """-Contains Buttons to be displayed and potentially clicked on.\n""" \ """-Contains an update method, that is called when the user clicks \n""" \ """ outside the menu, whilst the menu is open.""" def __init__( self, menu, sprites=[], miniMap=True ): self.sprites = sprites self.buttons = [] self.menu = menu for eachSprite in self.sprites: if eachSprite.button: self.buttons.append( eachSprite ) eachSprite.parentState = self #eachSprite.menu = menu self.keyInput = "" self.keyboardEnabled = False self.deleteLastChar = False self.x, self.y = 0, 0 self.fileNameLabel = Label( self, menu.playState.fileName, (0,getResolution()[1]-32) ) self.addSprite( self.fileNameLabel ) self.usingMiniMap = miniMap if miniMap: self.addMiniMap() self.miniMapFlip = False def addMiniMap( self ): self.miniMap = MiniMap( self, 160, 120 ) self.addSprite( self.miniMap ) def moveTo( self, x, y ): w, h = getResolution() if x-self.x+self.panel.rect.left < 0: x -= x-self.x+self.panel.rect.left elif x-self.x+self.panel.rect.right > w: x -= x-self.x+self.panel.rect.right-w if y-self.y+self.panel.rect.top < 0: y -= y-self.y+self.panel.rect.top elif y-self.y+self.panel.rect.bottom > h: y -= y-self.y+self.panel.rect.bottom-h dx, dy = x-self.x,y-self.y self.x, self.y = x, y for each in [ sprite for sprite in self.sprites if not sprite.fixed ]: each.rect.topleft = each.rect.x+dx, each.rect.y+dy def addButton( self, button, spriteIndex=None ): """Adds a button to the MenuState.""" #button.parentState = self #self.sprites.append( button ) self.addSprite( button, spriteIndex ) self.buttons.append( button ) def addSprite( self, sprite, index=None ): """Adds a sprite to the MenuState.""" sprite.parentState = self if not sprite.fixed: sprite.rect.x += self.x sprite.rect.y += self.y if index is None or index > len( self.sprites ) - 1: self.sprites.append( sprite ) else: self.sprites.insert( index, sprite ) def removeSprite( self, sprite ): self.sprites.remove( sprite ) if not sprite.fixed: sprite.rect.x -= self.x sprite.rect.y -= self.y def removeButton( self, button ): self.removeSprite( button ) self.buttons.remove( button ) def update( self, dt, clickPoint, clickKey, curMousePos ): """The method that runs when the user has clicked somewhere outside of the menu,\n""" \ """whilst the menu is still open.""" if self.usingMiniMap: self.miniMapFlip = not self.miniMapFlip if self.miniMapFlip: self.miniMap.regenerateImage() if self.miniMap.held: if self.miniMap.dragging: self.miniMap.rect.topleft = curMousePos[0]-self.miniMap.heldPos[0], curMousePos[1]-self.miniMap.heldPos[1] MiniMap.pos = self.miniMap.rect.topleft if self.miniMap.panning: self.miniMap.pan( curMousePos ) if not self.miniMap.rect.collidepoint( curMousePos ): self.miniMap.held = False self.miniMap.heldPos = None self.miniMap.dragging = False self.miniMap.panning = False def keyboardInput( self, keyEvent ): self.keyInput += keyEvent def getKeyboardInput( self ): result = self.keyInput self.keyInput = "" return result
def addMiniMap(self): self.miniMap = MiniMap(self, 160, 120) self.addSprite(self.miniMap)
class MenuState: """The MenuState class. Generally serves two purposes:\n""" \ """-Contains Buttons to be displayed and potentially clicked on.\n""" \ """-Contains an update method, that is called when the user clicks \n""" \ """ outside the menu, whilst the menu is open.""" def __init__(self, menu, sprites=[], miniMap=True): self.sprites = sprites self.buttons = [] self.menu = menu for eachSprite in self.sprites: if eachSprite.button: self.buttons.append(eachSprite) eachSprite.parentState = self #eachSprite.menu = menu self.keyInput = "" self.keyboardEnabled = False self.deleteLastChar = False self.x, self.y = 0, 0 self.fileNameLabel = Label(self, menu.playState.fileName, (0, getResolution()[1] - 32)) self.addSprite(self.fileNameLabel) self.usingMiniMap = miniMap if miniMap: self.addMiniMap() self.miniMapFlip = False def addMiniMap(self): self.miniMap = MiniMap(self, 160, 120) self.addSprite(self.miniMap) def moveTo(self, x, y): w, h = getResolution() if x - self.x + self.panel.rect.left < 0: x -= x - self.x + self.panel.rect.left elif x - self.x + self.panel.rect.right > w: x -= x - self.x + self.panel.rect.right - w if y - self.y + self.panel.rect.top < 0: y -= y - self.y + self.panel.rect.top elif y - self.y + self.panel.rect.bottom > h: y -= y - self.y + self.panel.rect.bottom - h dx, dy = x - self.x, y - self.y self.x, self.y = x, y for each in [sprite for sprite in self.sprites if not sprite.fixed]: each.rect.topleft = each.rect.x + dx, each.rect.y + dy def addButton(self, button, spriteIndex=None): """Adds a button to the MenuState.""" #button.parentState = self #self.sprites.append( button ) self.addSprite(button, spriteIndex) self.buttons.append(button) def addSprite(self, sprite, index=None): """Adds a sprite to the MenuState.""" sprite.parentState = self if not sprite.fixed: sprite.rect.x += self.x sprite.rect.y += self.y if index is None or index > len(self.sprites) - 1: self.sprites.append(sprite) else: self.sprites.insert(index, sprite) def removeSprite(self, sprite): self.sprites.remove(sprite) if not sprite.fixed: sprite.rect.x -= self.x sprite.rect.y -= self.y def removeButton(self, button): self.removeSprite(button) self.buttons.remove(button) def update(self, dt, clickPoint, clickKey, curMousePos): """The method that runs when the user has clicked somewhere outside of the menu,\n""" \ """whilst the menu is still open.""" if self.usingMiniMap: self.miniMapFlip = not self.miniMapFlip if self.miniMapFlip: self.miniMap.regenerateImage() if self.miniMap.held: if self.miniMap.dragging: self.miniMap.rect.topleft = curMousePos[ 0] - self.miniMap.heldPos[0], curMousePos[ 1] - self.miniMap.heldPos[1] MiniMap.pos = self.miniMap.rect.topleft if self.miniMap.panning: self.miniMap.pan(curMousePos) if not self.miniMap.rect.collidepoint(curMousePos): self.miniMap.held = False self.miniMap.heldPos = None self.miniMap.dragging = False self.miniMap.panning = False def keyboardInput(self, keyEvent): self.keyInput += keyEvent def getKeyboardInput(self): result = self.keyInput self.keyInput = "" return result