Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from random import randrange as rnd, choice
- from PIL import ImageTk, Image
- import os
- import time
- root = Tk()
- width = 900
- hight = 600
- padding = 50
- root.geometry(str(width)+'x'+str(hight)+'+100+100')
- canv = Canvas(bg='white')
- canv.pack(fill=BOTH,expand=1)
- class Player():
- def __init__(self):
- self.starty = 0
- self.x = 300
- self.y = 300
- self.r = 10
- self.vx = 0
- self.vy = 0
- self.points = 0
- self.g = 1
- self.can_jump = True
- self.id = canv.create_oval(self.x-self.r,self.y-self.r,self.x+self.r,self.y+self.r,fill='orange')
- self.keys = set()
- self.move()
- def move(self):
- self.vx = 0
- if 'left' in self.keys:
- self.vx = -5
- if 'right' in self.keys:
- self.vx = +5
- if 'jump' in self.keys:
- if self.can_jump:
- self.can_jump = False
- self.vy = -20
- self.vy += self.g
- self.x += self.vx
- self.y += self.vy
- if self.y > 550:
- self.y = 550
- self.can_jump = True
- if self.x > 600:
- dx = 600 - self.x
- self.x = 600
- for item in world:
- item.x += dx
- item.paint()
- if self.x < 300:
- dx = 300 - self.x
- self.x = 300
- for item in world:
- item.x += dx
- item.paint()
- canv.coords(self.id,self.x-self.r,self.y-self.r,self.x+self.r,self.y+self.r)
- root.after(30,self.move)
- class DefulfBlock():
- def __init__(self,x,y,k):
- self.x = x
- self.y = y
- self.w = 40
- self.h = 40
- self.k = k
- self.id = canv.create_rectangle(self.x,self.y,self.x+self.w,self.y+self.h,fill='orange')
- self.label = canv.create_text(self.x+self.w//2,self.y+self.h//2,text= self.k)
- self.update()
- def paint(self):
- canv.coords(self.id,self.x,self.y,self.x+self.w,self.y+self.h)
- canv.coords(self.label,self.x+self.w//2,self.y+self.h//2)
- def update(self):
- if self.x-player.r <= player.x <= self.x+self.w+player.r and self.y-player.r <= player.y <= self.y + self.h + player.r:
- print(self.k)
- prevx = player.x - player.vx
- prevy = player.y - player.vy
- if prevy+player.r < self.y:
- player.vy = 0
- #print('up')
- player.y = self.y-player.r-1
- player.can_jump = True
- elif prevy + player.r > self.y + self.h:
- player.vy = 0
- player.y = self.y + self.h + player.r+1
- print('down')
- elif prevx+player.r < self.x:
- player.vx = 0
- player.x = self.x - player.r-1
- #print('left')
- elif prevx+player.r > self.x + self.w:
- player.vx = 0
- player.x = self.x + self.w + player.r+1
- print('right')
- root.after(30,self.update)
- player = Player()
- f = open('map1.txt','r')
- r = 0
- x0 = 10
- y0 = 10
- m = 40
- k = 1
- world = []
- for line in f.readlines():
- c = 0
- for block in line.strip():
- if block == '1':
- x = x0 + c*m
- y = y0 + r*m
- world.append(DefulfBlock(x,y,k))
- k += 1
- c += 1
- r += 1
- f.close()
- def keyDown(event):
- #~ print(event.keycode)
- if event.keycode == 37:
- player.keys.add('left')
- if event.keycode == 39:
- player.keys.add('right')
- if event.keycode == 38:
- player.keys.add('jump')
- def keyUp(event):
- if event.keycode == 37:
- if 'left' in player.keys:
- player.keys.remove('left')
- if event.keycode == 39:
- if 'right' in player.keys:
- player.keys.remove('right')
- if event.keycode == 38:
- if 'jump' in player.keys:
- player.keys.remove('jump')
- root.bind('<Key>',keyDown)
- root.bind('<KeyRelease>',keyUp)
- mainloop()
Add Comment
Please, Sign In to add comment