|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Thu Jan 29, 2009 7:20 pm Post subject: |
|
Code: |
while running:
img.clear()
for x in listAll:
for y in listAll:
img.blit(tile, target=(x,y), mask=tilem)
handle_redraw(())
|
Tagad viss strādā lieliski, tagad bija doma izveidot kameras kustināšanu vienkārši mainot tailu koordinaatas kad notiek kustība, bet re ka nevar mainīt x vai y koordinaatas jo tas skaitās kā lists, ir kāds veids kā visiem lista lementiem pieskaitīt/atņemt ciparus vienlaikus?
Biju domājis ka atkal ar cikliem bet šis tas nesanāca. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Jan 29, 2009 7:29 pm Post subject: |
|
Kāpēc tu gribētu visiem kautko skaitīt klāt?
Ievies kameras koordinātes - cameraX, cameraY. Un tad attiecīgi, renderējot tailus, vai nu skaiti klāt šos mainīgos pie taila koordinātēm, kad tev vajag dabūt taila pasaules koordināti no taila koordinātes uz ekrāna, vai arī atņem no taila koordinātēm, kad tev vajag no pasaules koordinātes dabūt ekrāna koordināti. |
|
Back to top |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Fri Jan 30, 2009 6:29 pm Post subject: |
|
Nu dabūju nelielu kodu, itkā strādā, bet ne gluži
Code: |
camX=0
camY=0
while running:
img.clear()
for x in listAll:
for y in listAll:
img.blit(tile, target=(camX - x,camY - y), mask=tilem
|
Par cik x un y ņem koordinātas no lista, tad arī nesanāk atņemt šos mainīgos no camX/camY, Python shell saka:
Quote: | TypeError: unsupported operand type(s) for -: 'int' and 'list' |
Bet ja ņemu vienkāršu mainīgo/skaitli viss strādā. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Jan 30, 2009 8:15 pm Post subject: |
|
Nesapratu. x tev ir kas? Es biju domājis integers vai floats.
Tā kā camX arī ir int, tad atņemšanai tur tev ir jāstrādā.
Kas tad tev ir tajā listAll iekšā? |
|
Back to top |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Fri Jan 30, 2009 8:42 pm Post subject: |
|
listAll iekšā ir visas x un y koordinātas kuras nolasu no faila
Code: |
mapfile = file(u"E:\\map1.txt", "r+")
mapfile.seek(0)
listCoords=[]
listAll=[]
for line in mapfile:
tilename, x, y = line.split(",")
listCoords.append(int(x))
listCoords.append(int(y))
listAll.append(listCoords)
listCoords=[]
#'tilename' pagaidām neizmantots...
while running:
img.clear()
for x in listAll:
for y in listAll:
img.blit(grasst, target=(x, y), mask=tilem)
handle_redraw(())
e32.ao_yield()
|
Bet šis kods ir līks jo izskatās ka zīmē stipri vairāk nekā vajadzētu. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Jan 30, 2009 8:52 pm Post subject: |
|
Bez šaubām, ka līks. Kāpēc tu listAll liec iekšā x un y vērtību pārīšus, taču ciklā izmanto to gan x, gan y vērtībām?
Manurpāt tev vajag rakstīt sekojoši (ja pareizi saprotu tavu datu formātu):
Code: | for x, y in listAll:
img.blit(...) |
|
|
Back to top |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Tue Jun 30, 2009 12:58 pm Post subject: |
|
Paldies, viss strādā.
Kādu laiku nebiju neko darījis, bet te ir ~iznākums
Tagad tikai vajag lai obekti pareizā secībā zīmējas (nu piemēram ja player ir aiz koka tad lai nezīmējas virs koka)
Zīmēšanas kods:
Code: |
while running:
for tile, mask, cx, cy, cz in listAll:
img.blit(dictTiles[tile], (0,0), (camx+cx,camy+cy), mask=dictMasks[mask])
|
tile - bildes nosaukums
mask - 'mask' nosaukums, lai tiles ir caurspīdīgi kur vajag
cx, cy - koordinātas
cz - nu lasīju ka vajag izmantot Z koordinātu tāpēc pieliku klāt
listAll izskatās aptuveni tā:
listAll=[[grass01,mask01,100,50,3],[sand01,mask01,200,100,4]]
Nezinu gan kā izmantot sort() šādā gadījumā, varbūt vienīgi likt Z katram listam iekš listAll sākumā un tad viss arī 'sortēsies' pēc Z koordinātas, ja nu vien varētu uzstādīt pēc kura lista elementa notiek sortēšana...
Vēl arī nav skaidrs kā tad īsti izmanto Z koordināti šajā gadījumā, vai tad tas pats y neder? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Tue Jun 30, 2009 2:01 pm Post subject: |
|
Par z koordināti, kā to izmantot kodā, es jau uzrakstīju #2 postā. To vajag izmantot tikai tad, ja tev viena taila pozīcijā varēs atrasties vairāki spraiti. Ja tā nav, tad pilnīgi pietiks, ja zīmēsi no ekrāna augšas uz apakšu, tb tailus sakārtotu pēc y koordinātes augošā secībā.
Pythona list klases sort metode saņem funkciju argumentā, kurātu vari definēt kārtošanas kritēriju kā vien tev patīk. Lasi dokumentāciju vai, piemēram, šo: http://wiki.python.org/moin/HowTo/Sorting |
|
Back to top |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Wed Jul 01, 2009 3:06 pm Post subject: |
|
Paldies, pamēģināšu.
Tikai vēl es nesaprotu kā ar to sort lai dara,
domāju, ka jāskatās pēc šī piemēra
Code: |
a.sort(key=str.lower)
|
Taču kā lai šo 'key' lieto kā lista elementa numuru?
Ienāk prātā kkas tāds
Code: |
a.sort(key=int.[2])
|
|
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Jul 01, 2009 3:14 pm Post subject: |
|
Nē, tev jāskatās uz piemēru, kurā lambda:
Code: | a = [(1,6), (3,5), (10,2)]
a.sort(cmp = lambda x, y: x[1]-y[1])
print a # izvadīs [(10,2), (3,5), (1,6)] |
Šis kārtos tikai skatoties uz katra tupļa otro elementu. |
|
Back to top |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Thu Jul 02, 2009 1:37 pm Post subject: |
|
Šis kods izmet ārā
"TypeError: sort() takes no keyword arguments"
Varbūt s60 Python'am nemaz nav tādas iespējas? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Jul 02, 2009 1:44 pm Post subject: |
|
Kāda Python versija tur ir?
Apskaties attiecīgās pitona versijas manuālī helpu par sort metodi list objektam. Tur redzēsi kādi argumenti ir jāpadod. |
|
Back to top |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Thu Jul 02, 2009 1:47 pm Post subject: |
|
Laikam nesanāks
Quote: | Python 2.4 adds three keyword arguments to sort() that simplify many common usages: cmp, key, and reverse |
Uz Symbian jaunākais Python ir 1.9.6, iznāca tikai vakar vai aizvakar, es pats vispār uz 1.4.5 esmu, mēģināšu uzlikt jaunāko.
whoops, jaunā versija izskatās derēs, paskatīšos
Quote: | The new PyS60 version is the latest update for development series of PyS60, which is now based on the new Python 2.5.4 core and brings more opportunities for Python developers and the end users as well. |
|
|
Back to top |
|
|
Vecis
Joined: 01 Jan 2007 Posts: 144
|
Posted: Sat Jul 04, 2009 3:20 pm Post subject: |
|
Viss strādā
AR to kārtošanu gan viss sanāca vēl vienkāršāk, listAll kurā ir visi dai, koordinātas, nosākuma sakārtoju ar sort() pēc y koordinātas un pēc tam to pašu listu pēc z koordinātas kuru ieguvu z=y+h un viss notiek. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|