示例#1
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.setObjectName("miniMapDock")
        self.mMiniMap = MiniMap(self)
        self.setWidget(self.mMiniMap)
        self.retranslateUi()
示例#2
0
    def __init__(self, parent = None):
        super().__init__(parent)

        self.setObjectName("miniMapDock")
        self.mMiniMap = MiniMap(self)
        self.setWidget(self.mMiniMap)
        self.retranslateUi()
示例#3
0
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"))
示例#4
0
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"))
示例#5
0
文件: main.py 项目: ncd2dq/3dsimple
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()
示例#6
0
 def addMiniMap( self ):
     self.miniMap = MiniMap( self, 160, 120 )
     self.addSprite( self.miniMap )
示例#7
0
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
示例#8
0
 def addMiniMap(self):
     self.miniMap = MiniMap(self, 160, 120)
     self.addSprite(self.miniMap)
示例#9
0
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