def action_from_keys(self, keys):
go = np.zeros(self.action_dim)
if keys[pygame.K_LEFT]:
go[-1] = self.max_deg
if keys[pygame.K_RIGHT]:
go[-1] = -self.max_deg
if keys[pygame.K_UP]:
go[0] = 10
if keys[pygame.K_DOWN]:
go[0] = -10
return go
python类K_DOWN的实例源码
def handle(self, event):
gd.BoardGame.handle(self, event) # send event handling up
if self.show_msg == False:
if event.type == pygame.KEYDOWN or event.type == pygame.MOUSEBUTTONDOWN:
self.auto_check_reset()
if event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
self.home_sqare_switch(self.board.active_ship + 1)
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
self.home_sqare_switch(self.board.active_ship - 1)
elif event.type == pygame.KEYDOWN and event.key == pygame.K_UP:
self.home_sqare_switch(self.board.active_ship - self.sumn1n2sl + 1)
elif event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN:
self.home_sqare_switch(self.board.active_ship + self.sumn1n2sl)
elif event.type == pygame.KEYDOWN and event.key != pygame.K_RETURN and not self.correct:
lhv = len(self.home_square.value)
self.changed_since_check = True
if event.key == pygame.K_BACKSPACE:
if lhv > 0:
self.home_square.value = self.home_square.value[0:lhv - 1]
else:
char = event.unicode
if (len(char) > 0 and lhv < 2 and char in self.digits):
self.home_square.value = char
if self.auto_select:
self.home_sqare_switch(self.board.active_ship + 1)
else:
self.home_square.value = ""
self.home_square.update_me = True
self.mainloop.redraw_needed[0] = True
elif event.type == pygame.MOUSEBUTTONUP:
self.home_sqare_switch(self.board.active_ship)
def run(self):
# Setup
for event in pygame.event.get():
if (event.type == pygame.QUIT):
return (False, '', None)
if (event.type == pygame.KEYDOWN):
if (event.key == pygame.K_UP and not self.dino.is_jumping()):
self.dino.set_movement(8)
self.dino.set_jumping(True)
if (event.key == pygame.K_DOWN):
self.dino.set_movement(-5)
if (event.key == pygame.K_h):
if self.dino.get_coins() > 4:
self.dino.set_coins(self.dino.get_coins() - 5)
self.powers.append(power(self.dino.get_position()))
# Movement
self.move_all_objects()
# Enemies
if (self.enemy.check_hitted(self.dino) and not self.enemy.get_hitted()):
del self.enemy
self.enemy = enemy(self.screen_size, self.ground_limit)
self.dino.set_lives(1, type='decrement')
if (not self.dino.get_lives()):
return(True, 'game_over', None)
# Prize
self.check_prize_hitted()
# Objects to show
objects_to_show = {}
objects_to_show['lives'] = self.dino.get_lives()
objects_to_show['coins'] = self.dino.get_coins()
objects_to_show['power'] = self.powers
objects_to_show['char'] = self.dino
objects_to_show['enemy'] = self.enemy
objects_to_show['prize'] = self.prize
self.clock.tick(self.difficulty * 60)
return (True, 'match_running', objects_to_show)
def process_input(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if self.state.paused:
if event.key == pygame.K_r:
self.state.paused = False
if self.state.game_over:
if event.key == pygame.K_r:
self.state = State(self.ROWS, self.COLS)
if event.key == pygame.K_ESCAPE:
sys.exit()
if self.state.running:
if event.key == pygame.K_DOWN:
self.state.move_piece(board.DIRECTION_DOWN)
if event.key == pygame.K_LEFT:
self.state.move_piece(board.DIRECTION_LEFT)
if event.key == pygame.K_RIGHT:
self.state.move_piece(board.DIRECTION_RIGHT)
if event.key == pygame.K_x:
self.state.rotate_piece()
if event.key == pygame.K_z:
self.state.rotate_piece(True)
if event.key == pygame.K_SPACE:
self.state.drop_piece()
if event.key == pygame.K_p:
self.state.paused = True
def move(self, eventKey):
#print eventKey
if eventKey == pygame.K_LEFT:
self.x -= 35
self.col -= 1
elif eventKey == pygame.K_RIGHT:
self.x += 35
self.col += 1
elif eventKey == pygame.K_DOWN:
self.y += 20
def setControls(self):
"""
Setups the controls for the class. setGame must be called first in order for this to run correctly
"""
self.controls = []
self.values = [self.game.board.callable, self.game.board.mvCurUp, self.game.board.mvCurDown,
self.game.board.mvCurLeft, self.game.board.mvCurRight]
if self.control_set == "arrows":
self.keys = [pygame.K_RETURN, pygame.K_UP, pygame.K_DOWN, pygame.K_LEFT, pygame.K_RIGHT]
else:
self.keys = [pygame.K_SPACE, pygame.K_w, pygame.K_s, pygame.K_a, pygame.K_d]
for i in range(len(self.keys)):
self.controls.append([self.keys[i], self.values[i]])
def __init__(self, main_menu):
self.parent = main_menu.parent
self.main_menu = main_menu
self.settings = self.parent.settings
self.parent.event_handler.register_key_listener(self.handle_keypress)
self.title = text_renderer.render_title("Options", colours.COLOUR_WHITE)
self.title_position = (
(self.parent.resolution[0] - self.title.get_width())// 2,
15
)
self.directions = {
pygame.K_UP : [-1, 0],
pygame.K_DOWN : [ 1, 0],
pygame.K_RIGHT : [ 0, 1],
pygame.K_LEFT : [ 0, -1],
pygame.K_SPACE : [ 0, 2],
pygame.K_RETURN : [ 0, 2],
pygame.K_ESCAPE : [ 0, 3],
pygame.K_BACKSPACE : [ 0, 3]
}
self.animation = None
self.menu = SettingsMenu(self.settings)
self.menu.register_finished_callback(self.finished)
def __init__(self, main_menu):
self.parent = main_menu.parent
self.main_menu = main_menu
self.title_banner = main_menu.title_banner
self.parent.event_handler.register_key_listener(self.handle_keypress)
self.main_menu.menu.selected = 0
self.animation = None
self.directions = {
pygame.K_UP : -1,
pygame.K_DOWN : 1
}
def update(self, dt, game):
key = pygame.key.get_pressed()
if key[pygame.K_UP]:
self.rect.y -= self.vel * dt
if key[pygame.K_DOWN]:
self.rect.y += self.vel * dt
self.collider(game)
#AI Paddle, same as paddle but with pseudo AI for updating position
def run(self):
"""The mainloop
"""
#self.paint()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
if event.key==pygame.K_UP:
#print(m.active_itemnumber)
self.offset_y += 50
#self.sound2.play()
if event.key==pygame.K_DOWN:
self.offset_y -= 50
if event.key==pygame.K_LEFT:
self.x += self.dy
if event.key == pygame.K_RIGHT:
self.x -= self.dy
if event.key == pygame.K_PAGEUP:
self.offset_y += self.height
if event.key == pygame.K_PAGEDOWN:
self.offset_y -= self.height
milliseconds = self.clock.tick(self.fps)
seconds = milliseconds / 1000.0 # important for python2
self.offset_y -= seconds * 10 # scroll 10 pixels / second
if self.offset_y * -1 > self.text_height:
running = False
self.playtime += milliseconds / 1000.0
self.paint()
pygame.display.flip()
self.screen.blit(self.background, (0, 0))
#pygame.quit()
return
def __init__(self):
self._mapping = [
{ # Player
pygame.K_d:"right",
pygame.K_s:"down",
pygame.K_q:"left",
pygame.K_z:"up"
},
{ # Player 1
pygame.K_RIGHT:"right",
pygame.K_DOWN:"down",
pygame.K_LEFT:"left",
pygame.K_UP:"up"
}
]
def on_event(self, event):
print(event)
if event.type == pygame.QUIT:
self._running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self._running = False
if event.key == pygame.K_UP:
self.y -= 5
if event.key == pygame.K_DOWN:
self.y += 5
if event.key == pygame.K_RIGHT:
self.x += 5
if event.key == pygame.K_LEFT:
self.x -= 5
def Update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and self.Tile.Left != None:
self.Tile = self.Tile.Left
elif keys[pygame.K_RIGHT] and self.Tile.Right != None:
self.Tile = self.Tile.Right
if keys[pygame.K_UP] and self.Tile.Up != None:
self.Tile = self.Tile.Up
elif keys[pygame.K_DOWN] and self.Tile.Down != None:
self.Tile = self.Tile.Down
def Update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and self.Tile.Left != None:
self.Tile = self.Tile.Left
elif keys[pygame.K_RIGHT] and self.Tile.Right != None:
self.Tile = self.Tile.Right
if keys[pygame.K_UP] and self.Tile.Up != None:
self.Tile = self.Tile.Up
elif keys[pygame.K_DOWN] and self.Tile.Down != None:
self.Tile = self.Tile.Down
def Update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and self.Tile.Left != None:
self.Tile = self.Tile.Left
elif keys[pygame.K_RIGHT] and self.Tile.Right != None:
self.Tile = self.Tile.Right
if keys[pygame.K_UP] and self.Tile.Up != None:
self.Tile = self.Tile.Up
elif keys[pygame.K_DOWN] and self.Tile.Down != None:
self.Tile = self.Tile.Down
def Update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and self.Tile.Left != None:
self.Tile = self.Tile.Left
elif keys[pygame.K_RIGHT] and self.Tile.Right != None:
self.Tile = self.Tile.Right
if keys[pygame.K_UP] and self.Tile.Up != None:
self.Tile = self.Tile.Up
elif keys[pygame.K_DOWN] and self.Tile.Down != None:
self.Tile = self.Tile.Down
def update(self, *args):
"""
Handles the selection
parameters: tuple arguments for the update (first argument should be an instance pygame.event.Event)
return values: -
"""
if len(args) > 0 and self.isActive():
event = args[0]
if event.type == pygame.KEYDOWN and self.isFocused():
if event.key == pygame.K_UP:
self.moveCursor(-1)
elif event.key == pygame.K_DOWN:
self.moveCursor(1)
elif event.key == pygame.K_BACKSPACE or event.key == pygame.K_DELETE:
if self.isEditable():
if self._selection == self._cursor:
self.delete(self._selection - 1, CURSOR)
self.moveCursor(-1)
else:
self.delete(SELECTION, CURSOR)
self.setCursor(self._selection)
elif event.type == pygame.MOUSEBUTTONUP:
if self.rect.collidepoint(event.pos):
self.setSelection(CURSOR, self._posToIndex(event.pos[1] - self.rect.y))
elif event.type == pygame.MOUSEBUTTONDOWN:
if self.rect.collidepoint(event.pos):
self.setCursor(self._posToIndex(event.pos[1] - self.rect.y))
super(Listbox, self).update(*args)
def run(self):
# while no other GUI elements are visible or not in battle
while this.drawing & (not (this.text_box_visible | this.text_menu_visible | this.inbattle)):
pygame.event.pump()
event = pygame.event.poll()
if event.type == pygame.KEYDOWN:
# get keys pressed using pygame.key.get_pressed() as it is more continous than events.
if event.key == pygame.K_LCTRL:
# seperate hide and show buttons as they would counteract eachother.
self.player_menu.show()
elif event.key == pygame.K_z:
self.activate()
elif event.key == pygame.K_f:
# quick testing key to find if the battles work has to be with a background
# where Lucidia Bright is present.
battle(self, this.onscreen_sprites["Lucida Bright"])
pygame.time.delay(5)
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
self.facing("backward")
self.move(0, -1)
elif keys[pygame.K_DOWN]:
self.facing("forward")
self.move(0, 1)
elif keys[pygame.K_LEFT]:
self.facing("left")
self.move(-1, 0)
elif keys[pygame.K_RIGHT]:
self.facing("right")
self.move(1, 0)
def game():
setup()
running = True
start = time()
while running:
clock.tick(60)
for e in pygame.event.get():
if e.type == pygame.QUIT:
running = False
if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE:
running = False
# Move the player if an arrow key is pressed
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
player.move(-2, 0)
if key[pygame.K_RIGHT]:
player.move(2, 0)
if key[pygame.K_UP]:
player.move(0, -2)
if key[pygame.K_DOWN]:
player.move(0, 2)
# Just added this to make it slightly fun ;)
if player.rect.colliderect(end_rect):
raise SystemExit("You win! @{:2f}s".format(time() - start))
if computer.rect.colliderect(end_rect):
raise SystemExit("You lost! The computer wins")
# Draw the scene
screen.fill(BLACK)
computer.run()
for wall in walls:
pygame.draw.rect(screen, WHITE, wall.rect)
pygame.draw.rect(screen, RED, end_rect)
pygame.draw.rect(screen, GREEN, player.rect)
pygame.draw.rect(screen, YELLOW, computer.rect)
draw_counter(time() - start)
pygame.display.flip()
def action_from_keys(self, keys):
go = np.zeros(self.action_dim)
if keys[pygame.K_LEFT]:
go[-1] = self.max_deg
if keys[pygame.K_RIGHT]:
go[-1] = -self.max_deg
if keys[pygame.K_UP]:
go[0] = 10
if keys[pygame.K_DOWN]:
go[0] = -10
return go