我使用Python创建了一个八边形:
bif="hello.jpg"
import pygame, sys
from pygame.locals import *
points=[(-60,20),(-60,-20),(-20,60),(20...
colour=(0,191,255)
pygame.init()
screen=pygame.display.set_mode((1000,10...
background=pygame.image.load(bif).conve...
x,y=0,0
movex,movey=0,0
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_LEFT:
movex=-1
elif event.key==K_RIGHT:
movex=+1
elif event.key==K_UP:
movey=-1
elif event.key==K_DOWN:
movey=+1
if event.type==KEYUP:
if event.key==K_LEFT:
movex=0
elif event.key==K_RIGHT:
movex=0
elif event.key==K_UP:
movey=0
elif event.key==K_DOWN:
movey=0
x+=movex
y+=movey
screen.blit(background,(0,0))
pygame.draw.polygon(screen,colour,points...
pygame.display.update()
我是Python的新用户。我使用Python创建了一个八边形,但它不会移动!
答案 0 :(得分:0)
您已设置了八边形的点数,但movex
和movey
变量实际上并未改变它们。
作为一个简短的例子,如果你有一组正方形的点,那么:
mysquare = [[10, 10], [20, 10], [20, 20], [10, 20]] #I believe you can use lists and tuples, but in case NOT, switch the nested lists for tuples
...您需要按照x
变量的顺序更改movex
值。举个例子......
for point in mysquare:
point[0] += movex
point[1] += movey
如果您正在使用元组,则必须替换整个元素,而不是在给定索引处递增值。
for pt in mysquare:
pt = (pt[0] + movex, pt[1] + movey)
- 编辑 -
例如,让我们看一下while
循环中的位置。
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_LEFT:
movex=-1
elif event.key==K_RIGHT:
movex=+1
elif event.key==K_UP:
movey=-1
elif event.key==K_DOWN:
movey=+1
if event.type==KEYUP:
if event.key==K_LEFT:
movex=0
elif event.key==K_RIGHT:
movex=0
elif event.key==K_UP:
movey=0
elif event.key==K_DOWN:
movey=0
##at this point, once you know HOW to move the octagon,
##now you need to APPLY the changes to the octagon
for pt in your_octagon: ##or whatever you end up calling it
pt = (pt[0] + movex, pt[1] + movey)
screen.blit(background,(0,0))
pygame.draw.polygon(screen,colour,points...
pygame.display.update()
我相信这会给你带来理想的效果,虽然我没有测试过。但这个想法是合理的:弄清楚你将如何移动这些点,然后移动它们。