Advertisement
homeworkhelp111

Task 3

Feb 8th, 2022
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. # CodeSkulptor runs Python programs in your browser.
  2. # Click the upper left button to run this simple demo.
  3.  
  4. # CodeSkulptor is tested to run in recent versions of
  5. # Chrome, Firefox, Safari, and Edge.
  6.  
  7. import simplegui
  8.  
  9. SHEET_URL = "http://www.cs.rhul.ac.uk/courses/CS1830/sprites/runnerSheet.png"
  10. SHEET_WIDTH = 1440
  11. SHEET_HEIGHT = 1480
  12. SHEET_COLUMNS = 6
  13. SHEET_ROWS = 5
  14.  
  15. class Spritesheet:
  16. def __init__(self, imgurl, width, height, columns, rows):
  17.  
  18. self.img = simplegui.load_image(imgurl)
  19.  
  20. self.width = width
  21. self.height = height
  22. self.columns = columns
  23. self.rows = rows
  24.  
  25. self.frame_width = width / columns
  26. self.frame_height = height / rows
  27. self.frame_centre_x = self.frame_width / 2
  28. self.frame_centre_y = self.frame_height / 2
  29.  
  30. self.frame_index = [0, 0]
  31. self.clock = Clock(0)
  32. print(self.rows)
  33. print(self.columns)
  34.  
  35. def draw(self, canvas):
  36. source_centre = (
  37. self.frame_width * self.frame_index[1] + self.frame_centre_x,
  38. self.frame_height * self.frame_index[0] + self.frame_centre_y
  39. )
  40. source_size = (self.frame_width, self.frame_height)
  41. dest_centre = (300, 150)
  42. dest_size = (100, 100)
  43.  
  44. canvas.draw_image(
  45. self.img,
  46. source_centre, source_size,
  47. dest_centre, dest_size
  48. )
  49. self.clock.tick()
  50.  
  51. if(self.clock.transition(10)):
  52. self.next()
  53.  
  54. def next(self):
  55.  
  56. if(self.frame_index[1] + 1 >= self.columns):
  57. self.frame_index[0] = (self.frame_index[0] + 1)%self.rows
  58.  
  59. self.frame_index[1] = (self.frame_index[1]+1)%self.columns
  60.  
  61. class Clock:
  62.  
  63. def __init__(self, time):
  64. self.time = time
  65.  
  66. def tick(self):
  67. self.time = self.time + 1
  68.  
  69. def transition(self, frame_duration):
  70. if(self.time==frame_duration):
  71. self.time = 0
  72. return True
  73. else:
  74. return False
  75.  
  76. sheet = Spritesheet(
  77. SHEET_URL,
  78. SHEET_WIDTH, SHEET_HEIGHT,
  79. SHEET_COLUMNS, SHEET_ROWS
  80. )
  81.  
  82. frame = simplegui.create_frame("Sprite", 600, 300)
  83. frame.set_draw_handler(sheet.draw)
  84.  
  85. frame.start()
  86.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement