Hogy tudnék gyorsabban rajzolni python-ban?
Irtam egy Eletjáték programot pythonba ( [link]
Csak a grafikus megjelenítése nagyon lassú
Van a pálya ami egy 2D tömbben van benne és a négyzeteket egyenként rajzolgatom ki . (-1-fekete ; 2-fehér)
from graphics import *
w=800
h=600
def kirajzol():
for y in range(1,round(h/10)+1):
for x in range(1,round(w/10)+1):
c=Rectangle(Point((x-1)*10+1,(y-1)*10+1), Point(x*10-1,y*10-1))
if matrixmap[y][x] == -1:
c.setFill("white")
c.setOutline("white")
matrixmap[y][x]=0
c.draw(win)
elif matrixmap[y][x] == 2:
c.setFill("black")
c.setOutline("black")
matrixmap[y][x]=1
c.draw(win)
Ha valakinek van ötlete kérem írja le . Köszönöm .
A játékban egy elem 10 pixel . Bocs a rossz linkelésért
Nem talaltam meg hogy melyik graphics libet hasznalod, de biztosan 2 Point letrehozasaval a leggyorsabb csinalni egyet?
A masik pedig, hogy mivel lathatoan tobb a feher negyzet, feheritsd le kezdetben az egeszet. Igy csak a feketekre kell rajzolni, raadasul az if is kikerul a ciklusbol.
Innen töltöttem le [link]
Lehet mást kéne használnom :D ?
Okes, de ha minden ciklus elejen befeherited, akkor az elozo korben feketek is eltunnek.
Jatszottam egy kicsit a konyvtarral, a kovetkezokre jutottam:
- Minden c.draw(win) ujrarajzolja a teljes kepernyot.
- Ez sokaig tart es felesleges
- Igy tudod kikapcsolni:
win = GraphWin("Ablak", w, h, autoflush=False)
- A kor vegen egyszer akarjuk frissiteni a kepet:
win.update()
Ezekket egyutt szerintem mar elvezheto sebessegu lesz, annak ellenere hogy a Python nem teljesitmenyre van kihegyezve:)
Tovabbi gyorsitashoz masik API, masik programnyelv kellhet - de ilyesmi 2D dolgokhoz elegnek kell lennie.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!