Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 10, 2013 20:15:06

Massa1994
Зарегистрирован: 2013-08-10
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Я пытаюсь сделать похожую библиотеку на стандартную в Питоне turtle. (она медленная)

Привет всем
Для рисования я использую 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)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version