Форум сайта python.su
есть простенькая игра, но возникли проблемы с созданием движения. чтобы двигать персонажа приходится спамить клавиши w a s d, что не практично. Помогите сделать движение что-бы можно было зажать клавишу и персонаж двигался в нужном направлении. В разделе для новичков не отвечают(
КОД:
import pygame def inter(x1, y1, x2, y2, db1, db2): if x1 > x2-db1 and x1 < x2+db2 and y1 > y2-db1 and y1 < y2+db2: return 1 else: return 0 pygame.init() window = pygame.display.set_mode((560, 560)) screen = pygame.Surface((560, 560)) player = pygame.Surface((60, 60)) zet = pygame.Surface((60, 60)) arrow = pygame.Surface((20, 60)) count = 0 player.set_colorkey((255, 255, 255)) arrow.set_colorkey((255, 255, 255)) zet.set_colorkey((255, 255, 255)) img_b = pygame.image.load('BG2.gif') img_s = pygame.image.load('s.png') img_p = pygame.image.load('p.png') img_z = pygame.image.load('z.png') myfont = pygame.font.SysFont('myspase', 22) a_x = 1000 a_y = 1000 strike = False z_x = 0 z_y = 0 x_p = 0 y_p = 450 right = True done = False while done == False: for e in pygame.event.get(): if e.type == pygame.QUIT: done = True if e.type == pygame.KEYDOWN and e.key == pygame.K_s: y_p += 9 if e.type == pygame.KEYDOWN and e.key == pygame.K_w: y_p -= 9 if e.type == pygame.KEYDOWN and e.key == pygame.K_d: x_p += 9 if e.type == pygame.KEYDOWN and e.key == pygame.K_a: x_p -= 9 if e.type == pygame.KEYDOWN and e.key == pygame.K_SPACE: if strike == False: strike = True a_x = x_p + 20 a_y = y_p - 60 if strike: a_y -= 1 if a_y < 0: strike = False a_y = 1000 a_x = 1000 if inter(a_x, a_y, z_x, z_y, 20, 40): count += 1 strike = False a_y = 1000 a_x = 1000 if right: z_x += 0.2 if z_x > 350: z_x -= 0.2 right = False else: z_x -= 0.2 if z_x < 0: z_x += 0.2 right = True string = myfont.render('поподаний: '+str(count), 0, (255,0,0)) screen.blit(img_b, (0, 0)) arrow.blit(img_s, (0, 0)) player.blit(img_p, (0, 0)) zet.blit(img_z, (0, 0)) screen.blit(string, (0,50)) screen.blit(arrow, (a_x, a_y)) screen.blit(zet, (z_x, z_y)) screen.blit(player, (x_p, y_p)) window.blit(screen, (0, 0)) pygame.display.update() pygame.quit()
Офлайн