Advertisement
NinjaPro1202

Pong Fix MonikaAfterStory

Nov 15th, 2017
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.92 KB | None | 0 0
  1. init:
  2. image bg pong field = "mod_assets/pong_field.png"
  3.  
  4. python:
  5. def is_morning():
  6. return (datetime.datetime.now().time().hour > 6 and datetime.datetime.now().time().hour < 18)
  7.  
  8. class PongDisplayable(renpy.Displayable):
  9.  
  10. def __init__(self):
  11.  
  12. renpy.Displayable.__init__(self)
  13.  
  14.  
  15. self.paddle = Image("mod_assets/pong.png")
  16. self.ball = Image("mod_assets/pong_ball.png")
  17. self.player = Text(_("[player]"), size=36)
  18. self.monika = Text(_("Monika"), size=36)
  19. self.ctb = Text(_("Click to Begin"), size=36)
  20.  
  21.  
  22. self.PADDLE_WIDTH = 8
  23. self.PADDLE_HEIGHT = 79
  24. self.BALL_WIDTH = 15
  25. self.BALL_HEIGHT = 15
  26. self.COURT_TOP = 124
  27. self.COURT_BOTTOM = 654
  28.  
  29.  
  30. self.stuck = True
  31.  
  32.  
  33. self.playery = (self.COURT_BOTTOM - self.COURT_TOP) / 2
  34. self.computery = self.playery
  35.  
  36.  
  37.  
  38. self.computerspeed = 1000.0
  39.  
  40.  
  41.  
  42. self.bx = 110
  43. self.by = self.playery
  44. self.bdx = .5
  45. self.bdy = .5
  46. self.bspeed = 500.0
  47.  
  48.  
  49. self.oldst = None
  50.  
  51.  
  52. self.winner = None
  53.  
  54. def visit(self):
  55. return [ self.paddle, self.ball, self.player, self.monika, self.ctb ]
  56.  
  57.  
  58.  
  59. def render(self, width, height, st, at):
  60.  
  61.  
  62. r = renpy.Render(width, height)
  63.  
  64.  
  65. if self.oldst is None:
  66. self.oldst = st
  67.  
  68. dtime = st - self.oldst
  69. self.oldst = st
  70.  
  71.  
  72. speed = dtime * self.bspeed
  73. oldbx = self.bx
  74.  
  75. if self.stuck:
  76. self.by = self.playery
  77. else:
  78. self.bx += self.bdx * speed
  79. self.by += self.bdy * speed
  80.  
  81.  
  82.  
  83. cspeed = self.computerspeed * dtime
  84. if abs(self.by - self.computery) <= cspeed:
  85. self.computery = self.by
  86. else:
  87. self.computery += cspeed * (self.by - self.computery) / abs(self.by - self.computery)
  88.  
  89.  
  90.  
  91.  
  92. ball_top = self.COURT_TOP + self.BALL_HEIGHT / 2
  93. if self.by < ball_top:
  94. self.by = ball_top + (ball_top - self.by)
  95. self.bdy = -self.bdy
  96. renpy.sound.play("mod_assets/pong_beep.wav", channel=0)
  97.  
  98.  
  99. ball_bot = self.COURT_BOTTOM - self.BALL_HEIGHT / 2
  100. if self.by > ball_bot:
  101. self.by = ball_bot - (self.by - ball_bot)
  102. self.bdy = -self.bdy
  103. renpy.sound.play("mod_assets/pong_beep.wav", channel=0)
  104.  
  105.  
  106. def paddle(px, py, hotside):
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113. pi = renpy.render(self.paddle, 1280, 720, st, at)
  114.  
  115.  
  116.  
  117. r.blit(pi, (int(px), int(py - self.PADDLE_HEIGHT / 2)))
  118.  
  119. if py - self.PADDLE_HEIGHT / 2 <= self.by <= py + self.PADDLE_HEIGHT / 2:
  120.  
  121. hit = False
  122.  
  123. if oldbx >= hotside >= self.bx:
  124. self.bx = hotside + (hotside - self.bx)
  125. self.bdx = -self.bdx
  126. self.bdy = self.bdy + (renpy.random.random()/3.0)#makes y value of ball random
  127. hit = True
  128.  
  129. elif oldbx <= hotside <= self.bx:
  130. self.bx = hotside - (self.bx - hotside)
  131. self.bdx = -self.bdx
  132. self.bdy = self.bdy + (renpy.random.random()/3.0)#makes y value of ball random
  133. hit = True
  134.  
  135. if hit:
  136. renpy.sound.play("mod_assets/pong_boop.wav", channel=1)
  137. self.bspeed *= 1.20
  138.  
  139.  
  140. paddle(100, self.playery, 100 + self.PADDLE_WIDTH)
  141. paddle(1175, self.computery, 1175)
  142.  
  143.  
  144. ball = renpy.render(self.ball, 1280, 720, st, at)
  145. r.blit(ball, (int(self.bx - self.BALL_WIDTH / 2),
  146. int(self.by - self.BALL_HEIGHT / 2)))
  147.  
  148.  
  149. player = renpy.render(self.player, 1280, 720, st, at)
  150. r.blit(player, (100, 25))
  151.  
  152.  
  153. monika = renpy.render(self.monika, 1280, 720, st, at)
  154. ew, eh = monika.get_size()
  155. r.blit(monika, (1150 - ew, 25))
  156.  
  157.  
  158. if self.stuck:
  159. ctb = renpy.render(self.ctb, 1280, 720, st, at)
  160. cw, ch = ctb.get_size()
  161. r.blit(ctb, (640 - cw / 2, 30))
  162.  
  163.  
  164.  
  165. if self.bx < -200:
  166. self.winner = "monika"
  167.  
  168.  
  169.  
  170. renpy.timeout(0)
  171.  
  172. elif self.bx > 1280:
  173. self.winner = "player"
  174. renpy.timeout(0)
  175.  
  176.  
  177.  
  178. renpy.redraw(self, 0)
  179.  
  180.  
  181. return r
  182.  
  183.  
  184. def event(self, ev, x, y, st):
  185.  
  186. import pygame
  187.  
  188.  
  189.  
  190. if ev.type == pygame.MOUSEBUTTONDOWN and ev.button == 1:
  191. self.stuck = False
  192.  
  193.  
  194. y = max(y, self.COURT_TOP)
  195. y = min(y, self.COURT_BOTTOM)
  196. self.playery = y
  197.  
  198.  
  199.  
  200. if self.winner:
  201. return self.winner
  202. else:
  203. raise renpy.IgnoreEvent()
  204.  
  205.  
  206. label game_pong:
  207. hide screen keylistener
  208. m "You wanna play a game of Pong? Okay!"
  209. m "I'll beat you for sure this time!"
  210. call demo_minigame_pong from _call_demo_minigame_pong
  211.  
  212. label demo_minigame_pong:
  213.  
  214. window hide None
  215.  
  216.  
  217. scene bg pong field
  218.  
  219.  
  220. python:
  221. ui.add(PongDisplayable())
  222. winner = ui.interact(suppress_overlay=True, suppress_underlay=True)
  223.  
  224.  
  225. if is_morning():
  226. show room_mask as rm:
  227. size (320,180)
  228. pos (30,200)
  229. show room_mask2 as rm2:
  230. size (320,180)
  231. pos (935,200)
  232. show monika_transparent_day_bg
  233. elif not is_morning():
  234. scene black
  235. show room_mask as rm:
  236. size (320,180)
  237. pos (30,200)
  238. show room_mask2 as rm2:
  239. size (320,180)
  240. pos (935,200)
  241. show monika_bg
  242. show monika_bg_highlight
  243.  
  244. if winner == "monika":
  245.  
  246. m "I win~!"
  247. else:
  248.  
  249.  
  250. m "You won! Congratulations."
  251.  
  252.  
  253. menu:
  254. m "Do you want to play again?"
  255. "Yes.":
  256.  
  257. jump demo_minigame_pong
  258. "No.":
  259.  
  260. if winner == "monika":
  261. m "I can't really get excited for a game this simple..."
  262. m "At least we can still hang out with each other."
  263. m "Ahaha!"
  264. m "Thanks for letting me win, [player]."
  265. m "Only elementary schoolers seriously lose at Pong, right?"
  266. m "Ehehe~"
  267. else:
  268. m "Wow, I was actually trying that time."
  269. m "You must have really practiced at Pong to get so good."
  270. m "Is that something for you to be proud of?"
  271. m "I guess you wanted to impress me, [player]~"
  272. jump ch30_loop
  273. # Decompiled by unrpyc: https://github.com/CensoredUsername/unrpyc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement