Kezdőoldal » Számítástechnika » Programozás » Hogy tudnék gyorsabban rajzoln...

Hogy tudnék gyorsabban rajzolni python-ban?

Figyelt kérdés

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 .



2016. ápr. 30. 18:27
1 2
 1/14 A kérdező kommentje:

A játékban egy elem 10 pixel . Bocs a rossz linkelésért

[link]

2016. ápr. 30. 18:30
 2/14 SimkoL ***** válasza:
Windows vagy Linux ?
2016. ápr. 30. 18:53
Hasznos számodra ez a válasz?
 3/14 A kérdező kommentje:
windows
2016. ápr. 30. 19:00
 4/14 SimkoL ***** válasza:
Akkor hozzá lehet nyúlni a WIN API-hoz ami gyors képfeldolgozást eredményez vagy a Windows GDI-nek nézz utána. Delphi alatti használatról itt egy cikksorozat [link] lehet ad ötletet.
2016. ápr. 30. 19:26
Hasznos számodra ez a válasz?
 5/14 anonim ***** válasza:

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.

2016. ápr. 30. 19:30
Hasznos számodra ez a válasz?
 6/14 A kérdező kommentje:
Mivel a fekete részek nem csak sokasodnak , hanem el is kell tünniük ez így nem lehetséges de így is csak a születendő és a eltűnő kockákat rajzolom ki .
2016. ápr. 30. 19:36
 7/14 A kérdező kommentje:

Innen töltöttem le [link]

Lehet mást kéne használnom :D ?

2016. ápr. 30. 19:40
 8/14 anonim ***** válasza:

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.

2016. ápr. 30. 19:56
Hasznos számodra ez a válasz?
 9/14 A kérdező kommentje:
Köszönöm a segítséget !
2016. ápr. 30. 20:06
 10/14 anonim ***** válasza:

[link]


Szerintem ezzel gyorsabb lenne.

2016. ápr. 30. 20:11
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!