Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Autor | Správa |
---|
Registrovaný: 23.12.08 Prihlásený: 18.08.17 Príspevky: 515 Témy: 17 | 17 Bydlisko: Levice |
Jedna sa o hru, ovladanie cez sipky ide ale ked som to skusal prerobit na tahanie mysou tak my to nefungovalo. Ak by sa nasiel niekto kto by to vedel bol by som vdacny. Kód: import tkinter
class Hrac: def __init__(self, r, s): self.r = r self.s = s
def kresli(self, g, vel, farba): self.g = g self.vel = vel x,y = self.s*vel, self.r*vel self.id = g.create_oval(x+4,y+4,x+vel-4,y+vel-4,fill=farba)
def posun(self, dr, ds): self.r += dr self.s += ds self.g.move(self.id, ds*self.vel, dr*self.vel)
class Box: def __init__(self, r, s): self.r = r self.s = s
def kresli(self, g, vel, farba): self.g = g self.vel = vel x,y = self.s*vel, self.r*vel self.id = g.create_rectangle(x+4,y+4,x+vel-4,y+vel-4,fill=farba)
def posun(self, dr, ds): self.r += dr self.s += ds self.g.move(self.id, ds*self.vel, dr*self.vel)
class Program: def __init__(self, meno_suboru): t = open(meno_suboru) self.vyska = int(t.readline().strip()) self.pole = [None] * self.vyska self.box = [] for i in range(self.vyska): self.pole[i] = list(t.readline().strip()) for j in range(len(self.pole[i])): if self.pole[i][j] == '#': self.hrac = Hrac(i,j) self.pole[i][j] = '.' if self.pole[i][j] == 'a': self.box.append(Box(i,j)) self.pole[i][j] = '.' self.vel = int(t.readline().strip()) self.farba = t.readline().split() t.close() self.sirka = len(self.pole[0]) self.g = tkinter.Canvas(bg='white',width=self.sirka*self.vel, height=self.vyska*self.vel) self.g.pack() self.kresli() self.g.bind_all('<Up>', self.hore) self.g.bind_all('<Left>', self.vlavo) self.g.bind_all('<Right>', self.vpravo) self.g.bind_all('<Down>', self.dole) def kresli(self): for i in range(self.vyska): for j in range(self.sirka): x,y = j*self.vel, i*self.vel f = self.farba['*.+'.index(self.pole[i][j])+2] self.g.create_rectangle(x,y,x+self.vel,y+self.vel,fill=f) self.hrac.kresli(self.g, self.vel, self.farba[0]) for box in self.box: box.kresli(self.g, self.vel, self.farba[1]) def hore(self, e): self.posun(-1, 0)
def vlavo(self, e): self.posun(0, -1)
def vpravo(self, e): self.posun(0, 1)
def dole(self, e): self.posun(1, 0)
def daj_box(self, r, s): for i in range(len(self.box)): if self.box[i].r==r and self.box[i].s==s: return i return -1 def posun(self, dr, ds): r = self.hrac.r + dr s = self.hrac.s + ds if r<0 or r>=self.vyska or s<0 or s>=self.sirka or self.pole[r][s]=='*': return b = self.daj_box(r,s) if b >= 0: rr = r + dr ss = s + ds if rr<0 or rr>=self.vyska or ss<0 or ss>=self.sirka or self.pole[rr][ss]=='*': return if self.daj_box(rr,ss) >= 0: return self.box[b].posun(dr,ds) self.hrac.posun(dr,ds) for b in self.box: if self.pole[b.r][b.s] != '+': return
Program('mapa1.txt') a .txt Kód: 8 ***************** *.#.*...***.a..+* *...*...*+*..*.** *...*..a.....*..* *.........****..* ***********.....* ******+....a....* ***************** 30 red blue gray white yellow
_________________ PC: CPU: AMD Ryzen 5 1600X + Cooler Master Hyper 412S (2x Enermax UCMA12),GPU: GIGABYTE nVidia GTX660 OC 2GB,MB: Gigabyte AX370-Gaming K3,RAM: Corsair Vengeance LPX 2x8GB DDR4 3200MHz,PSU: Seasonic S12II 430W,SSD: Samsung 850 EVO 250GB,HDD1: WD Caviar Black 640GB WD6401AALS,HDD2: WD Caviar Green 1TB WD10EARS,HDD3: WD Caviar Green 1TB WD10EZRX,DVD: Samsung SH-S223C,Case: CoolerMaster CM 690 + 3x Enermax Magma UCMA12,Fan Controller: Zalman ZM-MFC2,LCD: Samsung SyncMaster 2333SW 23" NTB: Dell Vostro 5470 CPU: Intel Core i5 4200U,GPU: nVidia GT740M,RAM: DDR3 8GB 1600MHz,SSD: Crucial MX300 525GB,LCD: 14" |
|
Registrovaný: 12.11.14 Prihlásený: 04.08.15 Príspevky: 27 Témy: 3 | 3 |
nečakal by som že tu uvidím toľko zadaní z matfyzu Po absolvovaní predmetov s prof. Blahom sa tento kód nedá zmýliť. Škoda že som tu nebol v Januáry, helpol by som .. ak by to niekoho ešte zaujímalo, tak pre ťahanie myšou by si musel kompletne prerobiť kód. Toto je prisposobené na posuny o +-1. Ak by si chcel panáka preniesť hocikde na mapu potreboval by si nieco typu mouse.onrelease napr. ... v dokumentacii tkinter by si nasiel ze je to .bind("<ButtonRelease-1>", funct()) .. samozrejme nejaký globálny boolean či mouse.buttonclick trafil panáka. Prepočítať súradnice e.x a e.y s pozíciami políčok a priamo prideliť (po preverení, či niesi mimo mapu / na stene / tam kde nemáš) k self.x a self.y .... nasleduje prekreslenie. Ak ťaháš zas len o jedno tak kontroluješ rovinnú orientáciu kurzora vzhľadom na pozíciu hráča, čo by po absolvovaní matiky mala byť banalita.
|
|
Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Externé zariadenia | 3 | 947 | 15.01.2008 19:41 andrejko99 | | v Perl, Python, Ruby, CGI | 12 | 957 | 02.07.2021 8:41 void | | v Perl, Python, Ruby, CGI | 1 | 775 | 19.12.2011 23:09 Ďuri | | v Perl, Python, Ruby, CGI | 1 | 732 | 14.06.2013 21:35 reDo | | v Perl, Python, Ruby, CGI | 0 | 506 | 22.08.2016 13:23 marian_r | | v Perl, Python, Ruby, CGI | 19 | 1372 | 12.07.2013 23:36 phodinux | | v Perl, Python, Ruby, CGI | 12 | 754 | 12.11.2014 0:21 Misosvk | | v Perl, Python, Ruby, CGI | 6 | 1854 | 20.04.2009 8:18 bji | | v Ponuka práce | 0 | 663 | 31.05.2012 20:47 webwrx | | v Perl, Python, Ruby, CGI | 6 | 1125 | 02.07.2013 19:04 reDo | | v Perl, Python, Ruby, CGI | 1 | 831 | 02.09.2021 1:32 JanoF | | v Perl, Python, Ruby, CGI | 5 | 1014 | 08.06.2020 14:50 ux | | v Perl, Python, Ruby, CGI | 11 | 965 | 03.01.2016 16:35 Kraliček | | v Perl, Python, Ruby, CGI | 2 | 492 | 16.03.2018 1:30 JanoF | | v Perl, Python, Ruby, CGI | 13 | 1855 | 25.06.2013 19:58 phodinux | | v Perl, Python, Ruby, CGI | 2 | 1570 | 08.02.2010 8:53 juho |
|