daily pastebin goal
85%
SHARE
TWEET

Pong Fix MonikaAfterStory

NinjaPro1202 Nov 15th, 2017 123 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top