SHARE
TWEET

Pong Fix MonikaAfterStory

NinjaPro1202 Nov 15th, 2017 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
Top