Python 在Pygame中在屏幕上移动对象
所以我试着在屏幕上任意方向移动两个多边形,一个圆和一条线的随机混合体,当它到达屏幕的末端时,会被放回到屏幕上并再次移动。简单地说,我想在屏幕上移动这些形状。我真的不知道怎么做,我是pygame的新手,所以这一切都有点让人困惑,但这就是我目前所拥有的Python 在Pygame中在屏幕上移动对象,python,pygame,Python,Pygame,所以我试着在屏幕上任意方向移动两个多边形,一个圆和一条线的随机混合体,当它到达屏幕的末端时,会被放回到屏幕上并再次移动。简单地说,我想在屏幕上移动这些形状。我真的不知道怎么做,我是pygame的新手,所以这一切都有点让人困惑,但这就是我目前所拥有的 import pygame, sys, time, random from pygame.locals import * pygame.init() windowSurface = pygame.display.set_mode((500, 40
import pygame, sys, time, random
from pygame.locals import *
pygame.init()
windowSurface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption("Paint")
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
windowSurface.fill(WHITE)
info = pygame.display.Info()
sw = info.current_w
sh = info.current_h
x = y = 0
dx = 5
dy = 2
while True:
pygame.draw.polygon(windowSurface,BLUE,((0+x,250+y),(120+x,120+y),(55+x,55+y)))
pygame.draw.polygon(windowSurface,RED,((0+x,150+y),(85+x,85+y),(100+x,175+y),(0+x,150+y)))
pygame.draw.line(windowSurface,BLACK,(60+x,85+y), (120+x, 110+x), 6)
pygame.draw.circle(windowSurface, GREEN , (75+x,100+y), 13, 0)
x += dx
y += dy
if x - dx < 0 or x + dx > sw:
dx = -dx
if y - dy < 0 or y + dy > sh:
dy = -dy
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
导入pygame、sys、time、random
从pygame.locals导入*
pygame.init()
windowSurface=pygame.display.set_模式((500400),0,32)
pygame.display.set_标题(“绘制”)
黑色=(0,0,0)
白色=(255,255,255)
红色=(255,0,0)
绿色=(0,255,0)
蓝色=(0,0255)
窗台表面。填充(白色)
info=pygame.display.info()
sw=当前信息
sh=当前信息\u h
x=y=0
dx=5
dy=2
尽管如此:
pygame.draw.polygon(窗口表面,蓝色,((0+x,250+y),(120+x,120+y),(55+x,55+y)))
pygame.draw.polygon(窗口表面,红色,((0+x,150+y),(85+x,85+y),(100+x,175+y),(0+x,150+y)))
pygame.draw.line(窗口表面,黑色,(60+x,85+y),(120+x,110+x),6)
pygame.draw.circle(窗口表面,绿色,(75+x,100+y),13,0)
x+=dx
y+=dy
如果x-dx<0或x+dx>sw:
dx=-dx
如果y-dy<0或y+dy>sh:
dy=-dy
pygame.display.update()
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
sys.exit()
您可能希望在每次重画时清除屏幕
while True:
windowSurface.fill(WHITE) #This clears the screen on each redraw
pygame.draw.polygon(windowSurface,BLUE,((0+x,250+y),(120+x,120+y),(55+x,55+y)))
pygame.draw.polygon(windowSurface,RED,((0+x,150+y),(85+x,85+y),(100+x,175+y),(0+x,150+y)))
pygame.draw.line(windowSurface,BLACK,(60+x,85+y), (120+x, 110+y), 6)
pygame.draw.circle(windowSurface, GREEN , (75+x,100+y), 13, 0)
另外,查看直线的坐标。我已将端点更改为
(120+x,110+y)
如果你把你的边缘检测改成这个,你的形状大部分会留在窗口中
if x < 0 or x > sw-120:
dx = -dx
x += dx
if y < -85 or y > sh-175:
dy = -dy
y += dy
如果x<0或x>sw-120:
dx=-dx
x+=dx
如果y<-85或y>sh-175:
dy=-dy
y+=dy
这是家庭作业吗?不,这是我班的额外练习。我在一个班级里,但这是分开的,试图更深入地学习这些东西。