Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # CodeSkulptor runs Python programs in your browser.
- # Click the upper left button to run this simple demo.
- # CodeSkulptor is tested to run in recent versions of
- # Chrome, Firefox, Safari, and Edge.
- import simplegui
- SHEET_URL = "http://www.cs.rhul.ac.uk/courses/CS1830/sprites/runnerSheet.png"
- SHEET_WIDTH = 1440
- SHEET_HEIGHT = 1480
- SHEET_COLUMNS = 6
- SHEET_ROWS = 5
- class Spritesheet:
- def __init__(self, imgurl, width, height, columns, rows):
- self.img = simplegui.load_image(imgurl)
- self.width = width
- self.height = height
- self.columns = columns
- self.rows = rows
- self.frame_width = width / columns
- self.frame_height = height / rows
- self.frame_centre_x = self.frame_width / 2
- self.frame_centre_y = self.frame_height / 2
- self.frame_index = [0, 0]
- self.clock = Clock(0)
- print(self.rows)
- print(self.columns)
- def draw(self, canvas):
- source_centre = (
- self.frame_width * self.frame_index[1] + self.frame_centre_x,
- self.frame_height * self.frame_index[0] + self.frame_centre_y
- )
- source_size = (self.frame_width, self.frame_height)
- dest_centre = (300, 150)
- dest_size = (100, 100)
- canvas.draw_image(
- self.img,
- source_centre, source_size,
- dest_centre, dest_size
- )
- self.clock.tick()
- if(self.clock.transition(10)):
- self.next()
- def next(self):
- if(self.frame_index[1] + 1 >= self.columns):
- self.frame_index[0] = (self.frame_index[0] + 1)%self.rows
- self.frame_index[1] = (self.frame_index[1]+1)%self.columns
- class Clock:
- def __init__(self, time):
- self.time = time
- def tick(self):
- self.time = self.time + 1
- def transition(self, frame_duration):
- if(self.time==frame_duration):
- self.time = 0
- return True
- else:
- return False
- sheet = Spritesheet(
- SHEET_URL,
- SHEET_WIDTH, SHEET_HEIGHT,
- SHEET_COLUMNS, SHEET_ROWS
- )
- frame = simplegui.create_frame("Sprite", 600, 300)
- frame.set_draw_handler(sheet.draw)
- frame.start()
Add Comment
Please, Sign In to add comment