Уведомления

Группа в Telegram: @pythonsu

#1 Май 19, 2018 14:04:36

adidasnmdr1advv
Зарегистрирован: 2018-05-19
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь в pyglet, само задание в приложенном рисунке

Имеется такая заготовка, но я понимаю что это вообще не то, буду благодарен помощи экспертов:

import pyglet
import random
BoundX=400
BoundY=300

window = pyglet.window.Window(BoundX,BoundY)

class squaredobject():
def __init__(self,halfsize,startx,starty,dx=1,dy=1,rndbord=1):
self.__halfsize=halfsize
self.__x=startx
self.__y=starty
self.__dx=dx
self.__dy=dy
self.__rndbord=rndbord
def rules(self,BoundX,BoundY):
changex=random.randint(1,100)
changey=random.randint(1,100)

if changex<=self.__rndbord or not(self.checkx(0,BoundX)):
self.__dx*=-1
if changey<=self.__rndbord or not(self.checky(0,BoundY)):
self.__dy*=-1

def move(self,BoundX,BoundY):
self.rules(BoundX,BoundY)
self.__x+=self.__dx
self.__y+=self.__dy
def draw(self):
pyglet.graphics.draw(4, pyglet.gl.GL_QUADS, ('v2f', [self.__x-self.__halfsize,self.__y-self.__halfsize,
self.__x-self.__halfsize,self.__y+self.__halfsize,
self.__x+self.__halfsize,self.__y+self.__halfsize,
self.__x+self.__halfsize,self.__y-self.__halfsize]))

def checkx(self,leftx,rightx):
if (self.__x-self.__halfsize)<leftx or (self.__x+self.__halfsize)>rightx:
return False
return True
def checky(self,lowy,highy):
if (self.__y-self.__halfsize)<lowy or (self.__y+self.__halfsize)>highy:
return False
return True

class triangledobject(squaredobject):
def __init__(self,halfsize,startx,starty,dx=1,dy=1,rndbord=1):
self.squaredobject=squaredobject(halfsize,startx,starty,dx,dy,rndbord)
def __getattr__(self,attr):
return getattr(self.squaredobject,attr)
def draw(self):
pyglet.graphics.draw(3, pyglet.gl.GL_TRIANGLES, ('v2f', [__x-__halfsize,__y-__halfsize,
__x-__halfsize,__y+__halfsize,
__x+__halfsize,__y+__halfsize]))
dx=1
dy=1
O1=squaredobject(5, window.width//2, window.height//2,1,1,0)
O2=triangledobject(5, window.width//2, window.height//2,-1,-1,0)
period = 1/60.0 # 60 frames per second



def update(dt):
window.clear()
O1.move(BoundX,BoundY)
O1.draw()
O2.move(BoundX,BoundY)
O2.draw()


pyglet.clock.schedule_interval(update, period)

pyglet.app.run()



Отредактировано adidasnmdr1advv (Май 20, 2018 15:11:10)

Прикреплённый файлы:
attachment Screenshot_1.png (8,7 KБ)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version