Форум сайта python.su
Привет всем
Для рисования я использую pygame.
Если вы запустите код то вы увидите что центр треугольников постоянно прыгает немного (двигается) я не пойму почему, как исправить это?
# -*- coding: cp1251 -*-
import pygame, time
from math import sin , cos, radians, pi
import sys
import math
class turtle:
def __init__ (self, size=(1024, 768), ugal=0.0, x=None, y=None):
pygame.init()
self.pi = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899
self.screen = pygame.display.set_mode(size)
self.color_black = (1, 1, 1)
self.color_white = (255, 255, 255)
self.screen.fill(self.color_white)
self.ugal = ugal+90
self.clock = pygame.time.Clock()
if x is None and y is None:
self.x = size[0]/2
self.y = size[1]/2
self.xnach = size[0]/2
self.ynach = size[1]/2
else:
self.x = x
self.y = y
self.risovati = True
self.pen_size = 1
def fd(self, naslokika_proiti):
# Пройди вперёд на n
self.ugal = self.ugal % 360
x = sin(self.ugal * pi / 180.0)*naslokika_proiti
y = cos(self.ugal * pi / 180.0)*naslokika_proiti
if self.risovati:
pygame.draw.line(self.screen, self.color_black, (self.x, self.y),(x + self.x, y + self.y), self.pen_size)
self.x = x + self.x
self.y = y + self.y
def bk(self, naslokika_otoiti):
#Пройди назад на n
self.ugal = self.ugal % 360
x = sin(self.ugal * pi / 180.0)*naslokika_otoiti
y = cos(self.ugal * pi / 180.0)*naslokika_otoiti
if self.risovati:
pygame.draw.line(self.screen, self.color_black, (self.x, self.y),(self.x - x , self.y -y), self.pen_size)
self.x = self.x - x
self.y = self.y - y
def left(self, ugal):
# поверни налево n
self.ugal += ugal
def right(self, ugal):
# поверни направо n
self.ugal -= ugal
def up(self, a = 0):
# Поднять перо
self.risovati = False
def down (self, a = 0):
self.risovati = True
# Опустить перо
def goto(self, x, y):
# Переместить черепашку в точку с координатами
if self.risovati:
pygame.draw.aaline(self.screen, self.color_black, (self.x, self.y),(x, y), self.pen_size)
self.x = x
self.y = y
def seth(self, ugal):
self.ugal = ugal+90
def circle(self, radius):
if self.risovati:
pygame.draw.circle(self.screen, self.color_black, (self.x, self.y), radius, self.pen_size)
def pensize(self, size):
self.pen_size = size
def color(self, color):
self.color_black = color
def clear(self):
self.screen.fill(self.color_white)
self.event = pygame.event.poll()
if self.event.type == pygame.QUIT:
pygame.quit()
sys.exit()
def update(self):
pygame.display.update()
lt = left
rt = right
a = turtle()
d = 0
def kvadrat(razmer, d):
a.up()
a.goto(500, 400)
a.down()
a.seth(d)
for i in xrange(4):
a.lt(90)
for i in xrange(3):
a.fd(razmer)
a.lt(120)
def limuliruiu():
global d
while True:
a.clock.tick(6000)
a.clear()
#a.color((255, 200, 0))
kvadrat(300, d)
d += 0.1
a.update()
limuliruiu()
Отредактировано Massa1994 (Авг. 10, 2013 20:54:47)
Офлайн