Advertisement
Mr-A

The A-Wave Simulator V1.0

Apr 10th, 2013
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 34.94 KB | None | 0 0
  1. #By Mr.A AKA A-MAN (c)2012-2013
  2. #All rights reserved
  3. #The A-Wave Simulator
  4. #Feel free to use any part of this code, but don't claim as your own.
  5.  
  6.  
  7. import pygame
  8. from pygame.locals import *
  9. import time, math, sys
  10.  
  11.  
  12. #Wave propertiess:
  13. AMPLITUDE = 130
  14. FREQUENCY = 2
  15. WAVELENGTH= 114
  16.  
  17. AMPLITUDE2= 0
  18. FREQUENCY2= 2
  19. WAVELENGTH2= 114
  20.  
  21.  
  22. WAVEVELOCITY = FREQUENCY * WAVELENGTH
  23. WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  24. #end
  25. INTERFERE = False
  26. DEFLECT   = False
  27. LONGITUDINAL=False
  28. COHERENTIZE = False
  29. SHOW_B    = False
  30.  
  31. LONGITUDINALheight = 100
  32. NOOFLONGILINES = 70
  33.  
  34.  
  35. FPS = 100
  36. FPS_CLOCK = pygame.time.Clock()
  37.  
  38. pygame.init()
  39.  
  40. pygame.mouse.set_cursor(*pygame.cursors.broken_x)
  41.  
  42. SCREEN = pygame.display.set_mode((1024, 768), pygame.FULLSCREEN|pygame.HWSURFACE| pygame.DOUBLEBUF)
  43. pygame.display.set_caption("The A-Wave Simulator")
  44.  
  45. FONT = pygame.font.SysFont(None, 20, False, False)
  46.  
  47. LARGERFONT = pygame.font.SysFont(None, 30, False, False)
  48.  
  49. LARGEFONT = pygame.font.SysFont(None, 60, False, False)
  50.  
  51. ERTEXT = LARGEFONT.render("ERROR: THE VELOCITIES OF WAVE <#A> AND", True, (255, 0, 0))
  52. ERTEXT2 = LARGEFONT.render("WAVE <#B> ARE NOT EQUAL!", True, (255, 0, 0))
  53. ERTEXTbdy = ERTEXT.get_rect()
  54. ERTEXT2bdy = ERTEXT2.get_rect()
  55. ERTEXTbdy.centerx, ERTEXT2bdy.centerx = SCREEN.get_rect().centerx, SCREEN.get_rect().centerx
  56. ERTEXTbdy.centery, ERTEXT2bdy.centery = SCREEN.get_rect().centery-75, SCREEN.get_rect().centery+75
  57.  
  58. L0TEXT= FONT.render("Wave velocity = CONSTANT <1400>", True, (255, 255, 255))
  59. L0TEXTbdy = L0TEXT.get_rect()
  60. L0TEXTbdy.left = SCREEN.get_rect().left + 20
  61. L0TEXTbdy.bottom=SCREEN.get_rect().top + 600
  62.  
  63. L1TEXT= LARGERFONT.render("Wave motion as in Wavefronts: ", True, (0, 255, 0))
  64. L1TEXTbdy = L1TEXT.get_rect()
  65. L1TEXTbdy.left = SCREEN.get_rect().left + 20
  66. L1TEXTbdy.bottom=SCREEN.get_rect().top + 200
  67.  
  68. L2TEXT= LARGERFONT.render("Wave motion as in Particles: ", True, (0, 255, 0))
  69. L2TEXTbdy = L2TEXT.get_rect()
  70. L2TEXTbdy.left = SCREEN.get_rect().left + 20
  71. L2TEXTbdy.bottom=SCREEN.get_rect().top + 420
  72.  
  73. VTEXT= FONT.render("Wave velocity  (px/s): ", True, (0, 255, 0))
  74. VTEXTbdy = VTEXT.get_rect()
  75. VTEXTbdy.left = SCREEN.get_rect().left + 20
  76. VTEXTbdy.bottom=SCREEN.get_rect().bottom - 20
  77.  
  78. VTEXTbdy2 = pygame.Rect(VTEXTbdy[0]+400, VTEXTbdy[1], VTEXTbdy[2], VTEXTbdy[3])
  79.  
  80.  
  81. FTEXT= FONT.render("Wave Frequency (s^-1): ", True, (0, 255, 0))
  82. FTEXTbdy = FTEXT.get_rect()
  83. FTEXTbdy.left = SCREEN.get_rect().left + 20
  84. FTEXTbdy.bottom=SCREEN.get_rect().bottom - 40
  85.  
  86. FTEXTbdy2 = pygame.Rect(FTEXTbdy[0]+400, FTEXTbdy[1], FTEXTbdy[2], FTEXTbdy[3])
  87.  
  88. WTEXT= FONT.render("Wave Length (px): ", True, (0, 255, 0))
  89. WTEXTbdy = WTEXT.get_rect()
  90. WTEXTbdy.left = SCREEN.get_rect().left + 20
  91. WTEXTbdy.bottom=SCREEN.get_rect().bottom - 60
  92.  
  93. WTEXTbdy2 = pygame.Rect(WTEXTbdy[0]+400, WTEXTbdy[1], WTEXTbdy[2], WTEXTbdy[3])
  94.  
  95. ATEXT= FONT.render("Max. Amplitude (px): ", True, (0, 255, 0))
  96.  
  97. ATEXTL= FONT.render("Max. Amplitude (px/3): ", True, (0, 255, 0))
  98.  
  99. ATEXTbdy = ATEXT.get_rect()
  100. ATEXTbdy.left = SCREEN.get_rect().left + 20
  101. ATEXTbdy.bottom=SCREEN.get_rect().bottom - 80
  102.  
  103. ATEXTbdy2 = pygame.Rect(ATEXTbdy[0]+400, ATEXTbdy[1], ATEXTbdy[2], ATEXTbdy[3])
  104.  
  105. PXTEXT= FONT.render("1 cm ~= 38 px", True, (0, 255, 0))
  106. PXTEXTbdy = PXTEXT.get_rect()
  107. PXTEXTbdy.left = SCREEN.get_rect().left + 20
  108. PXTEXTbdy.top =SCREEN.get_rect().top + 40
  109.  
  110. NTEXT= FONT.render("Note: The velocity of the wave can not deceed 100. That is because the FPS of the program is a 100.", True, (0, 255, 0))
  111. NTEXTbdy = NTEXT.get_rect()
  112. NTEXTbdy.left = SCREEN.get_rect().left + 20
  113. NTEXTbdy.top=SCREEN.get_rect().top + 20
  114.  
  115.  
  116. WAVEATEXT= FONT.render("Wave A <#Red>:", True, (255, 0, 0))
  117. WAVEBTEXT= FONT.render("Wave B <#Blue>:", True, (0, 0, 255))
  118. WAVEATEXTbdy = WAVEATEXT.get_rect()
  119. WAVEBTEXTbdy = WAVEBTEXT.get_rect()
  120. WAVEATEXTbdy = pygame.Rect(ATEXTbdy[0], ATEXTbdy[1]-30, WAVEATEXTbdy[2], WAVEATEXTbdy[3])
  121. WAVEBTEXTbdy = pygame.Rect(ATEXTbdy2[0], ATEXTbdy[1]-30, WAVEBTEXTbdy[2], WAVEBTEXTbdy[3])
  122.  
  123. BTEXT= FONT.render("Display <B>: ", True, (0, 255, 0))
  124. BTEXTbdy = BTEXT.get_rect()
  125. BTEXTbdy = pygame.Rect(ATEXTbdy2[0] + 70, ATEXTbdy[1]-30, BTEXTbdy[2], BTEXTbdy[3])
  126.  
  127.  
  128. ITEXT= FONT.render("Allow interference: ", True, (0, 255, 0))
  129. ITEXTbdy = ITEXT.get_rect()
  130. ITEXTbdy.right = SCREEN.get_rect().right - 45
  131. ITEXTbdy.top=SCREEN.get_rect().bottom - 90
  132.  
  133. CTEXT= FONT.render("Coherentize waves: ", True, (0, 255, 0))
  134. CTEXTbdy = CTEXT.get_rect()
  135. CTEXTbdy.right = SCREEN.get_rect().right - 45
  136. CTEXTbdy.top=SCREEN.get_rect().bottom - 110
  137.  
  138. DTEXT= FONT.render("Allow Reflection: ", True, (0, 255, 0))
  139. DTEXTbdy = DTEXT.get_rect()
  140. DTEXTbdy.right = SCREEN.get_rect().right - 45
  141. DTEXTbdy.top=SCREEN.get_rect().bottom - 70
  142.  
  143. LTEXT= FONT.render("Show in Longitudianl Form: ", True, (0, 255, 0))
  144. LTEXTbdy = LTEXT.get_rect()
  145. LTEXTbdy.right = SCREEN.get_rect().right - 45
  146. LTEXTbdy.top=SCREEN.get_rect().bottom - 50
  147.  
  148. RTEXT= FONT.render("Reset All: ", True, (0, 255, 0))
  149. RTEXTbdy = RTEXT.get_rect()
  150. RTEXTbdy.right = SCREEN.get_rect().right - 95
  151. RTEXTbdy.top=SCREEN.get_rect().top + 20
  152.  
  153. R2TEXT= FONT.render("Reset Screen: ", True, (0, 255, 0))
  154. R2TEXTbdy = R2TEXT.get_rect()
  155. R2TEXTbdy.right = SCREEN.get_rect().right - 45
  156. R2TEXTbdy.top=SCREEN.get_rect().bottom - 30
  157.  
  158.  
  159. BUTTONBDYS = []
  160. BUTTONBDYS.append((ATEXTbdy[0]+250,ATEXTbdy[1], 12, 12))
  161. BUTTONBDYS.append((ATEXTbdy[0]+250+17,ATEXTbdy[1], 12, 12))
  162. BUTTONBDYS.append((ATEXTbdy[0]+250+17+17,ATEXTbdy[1], 24, 12))
  163. BUTTONBDYS.append((ATEXTbdy[0]+250+17+17+29,ATEXTbdy[1], 24, 12))
  164.  
  165. BUTTONBDYS.append((WTEXTbdy[0]+250,WTEXTbdy[1], 12, 12))
  166. BUTTONBDYS.append((WTEXTbdy[0]+250+17,WTEXTbdy[1], 12, 12))
  167. BUTTONBDYS.append((WTEXTbdy[0]+250+17+17,WTEXTbdy[1], 24, 12))
  168. BUTTONBDYS.append((WTEXTbdy[0]+250+17+17+29,WTEXTbdy[1], 24, 12))
  169.  
  170. BUTTONBDYS.append((FTEXTbdy[0]+250,FTEXTbdy[1], 12, 12))
  171. BUTTONBDYS.append((FTEXTbdy[0]+250+17,FTEXTbdy[1], 12, 12))
  172. BUTTONBDYS.append((FTEXTbdy[0]+250+17+17,FTEXTbdy[1], 24, 12))
  173. BUTTONBDYS.append((FTEXTbdy[0]+250+17+17+29,FTEXTbdy[1], 24, 12))
  174.  
  175. BUTTONBDYS.append((ATEXTbdy2[0]+250,ATEXTbdy[1], 12, 12))
  176. BUTTONBDYS.append((ATEXTbdy2[0]+250+17,ATEXTbdy[1], 12, 12))
  177. BUTTONBDYS.append((ATEXTbdy2[0]+250+17+17,ATEXTbdy[1], 24, 12))
  178. BUTTONBDYS.append((ATEXTbdy2[0]+250+17+17+29,ATEXTbdy[1], 24, 12))
  179.  
  180. BUTTONBDYS.append((WTEXTbdy2[0]+250,WTEXTbdy[1], 12, 12))
  181. BUTTONBDYS.append((WTEXTbdy2[0]+250+17,WTEXTbdy[1], 12, 12))
  182. BUTTONBDYS.append((WTEXTbdy2[0]+250+17+17,WTEXTbdy[1], 24, 12))
  183. BUTTONBDYS.append((WTEXTbdy2[0]+250+17+17+29,WTEXTbdy[1], 24, 12))
  184.  
  185. BUTTONBDYS.append((FTEXTbdy2[0]+250,FTEXTbdy[1], 12, 12))
  186. BUTTONBDYS.append((FTEXTbdy2[0]+250+17,FTEXTbdy[1], 12, 12))
  187. BUTTONBDYS.append((FTEXTbdy2[0]+250+17+17,FTEXTbdy[1], 24, 12))
  188. BUTTONBDYS.append((FTEXTbdy2[0]+250+17+17+29,FTEXTbdy[1], 24, 12))
  189.  
  190. BUTTONBDYS.append((SCREEN.get_rect().right - 40,SCREEN.get_rect().bottom-90, 20, 15)) #INTERFERENCE
  191. BUTTONBDYS.append((SCREEN.get_rect().right - 40,SCREEN.get_rect().bottom-70, 20, 15)) #DEFLECTION
  192. BUTTONBDYS.append((SCREEN.get_rect().right - 40,SCREEN.get_rect().bottom-50, 20, 15)) #LONGITUDINAL
  193. BUTTONBDYS.append((SCREEN.get_rect().right - 90,SCREEN.get_rect().top+20, 20, 15))    #RESET all
  194. BUTTONBDYS.append((SCREEN.get_rect().right - 40,SCREEN.get_rect().bottom-30, 20, 15)) #RESET Screen
  195. BUTTONBDYS.append((SCREEN.get_rect().right - 40,SCREEN.get_rect().top+20, 20, 15))    #CLOSE X
  196. BUTTONBDYS.append((SCREEN.get_rect().right - 40,SCREEN.get_rect().bottom-110, 20, 15))#COHERENTIZE
  197. BUTTONBDYS.append((BTEXTbdy[0]+BTEXTbdy[2]+10,BTEXTbdy[1], 20, 15))                   #SHOW <B>
  198.  
  199.  
  200. #OTHER VARS
  201. STARTINGPOS = (SCREEN.get_rect().right - 10, SCREEN.get_rect().centery)
  202. POINTS      = []
  203. FREQ = int(float(FPS) / float(FREQUENCY))
  204.  
  205. STARTINGPOS2 = (SCREEN.get_rect().right - 10, SCREEN.get_rect().centery)
  206. POINTS2      = []
  207. FREQ2 = int(float(FPS) / float(FREQUENCY2))
  208.  
  209. POINTSINTERFERE = []
  210. R_POINTS = []
  211. #END
  212.  
  213.  
  214. JUST_A_VALYAH = 0
  215.  
  216. SCREEN.fill((0, 0, 0))
  217. SOMEVALSFORWARD=[]
  218. SOMEVALSBACKWARD=[]
  219. ORIGINALS=[]
  220. GOLONGI=[]
  221.  
  222.  
  223. def close():
  224.     pygame.quit()
  225.     sys.exit()
  226.  
  227. def pause():
  228.     PAUSE = True
  229.     while PAUSE:
  230.         for event in pygame.event.get():
  231.             if event.type == QUIT:
  232.                 pygame.quit()
  233.                 sys.exit()
  234.             if event.type == KEYDOWN:
  235.                 if event.key == K_F1:
  236.                     PAUSE = False
  237.  
  238.             if event.type == MOUSEBUTTONDOWN:
  239.                 if event.button == 1:
  240.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[29]):
  241.                         close()
  242.         #pygame.mouse.set_cursor(*pygame.cursors.broken_x)
  243.         #pygame.display.flip()
  244.     pass
  245. def drawlongi(CHECK, FREQ):
  246.     global LONGIbdys, SOMEVALS, ORIGINALS, GOLONGI
  247.  
  248.     tempotempy = []
  249.     tempodo= 0
  250.     if CHECK:
  251.         ORIGINALS=[]
  252.         GOLONGI=[]
  253.         blablabla=(SCREEN.get_rect().width/NOOFLONGILINES)
  254.         for a in range(NOOFLONGILINES):
  255.            
  256.             blablabla += SCREEN.get_rect().width/NOOFLONGILINES
  257.             LONGIbdys.append(pygame.Rect(blablabla, SCREEN.get_rect().centery-100-LONGITUDINALheight/2, 2, LONGITUDINALheight))
  258.             pygame.draw.line(SCREEN, (128, 128, 128), (LONGIbdys[a][0], LONGIbdys[a][1]), (LONGIbdys[a][0], LONGIbdys[a][1]+LONGITUDINALheight), 2)
  259.         ORIGINALS = []
  260.         for sublist in list(LONGIbdys):
  261.             ORIGINALS.append(sublist[:])
  262.     else:
  263.         for y in LONGIbdys:
  264.             #STARTINGPOS[0] - int(AMPLITUDE/9 *(math.sin((2*math.pi) * float (float(a)/float(FREQ))) ))
  265.             #pygame.draw.line(SCREEN, (128, 128, 128), (a[0], a[1]), (a[0], a[1]+a[3]), 2)
  266.             pygame.draw.rect(SCREEN, (255, 255, 255), y, 1)
  267.             pygame.draw.circle(SCREEN, (255, 0, 0), (y.centerx, y.centery+170), 7, 7)
  268.             pygame.draw.circle(SCREEN, (0, 255, 0), (y.centerx, y.centery+190), 7, 7)
  269.             pygame.draw.circle(SCREEN, (0, 0, 255), (y.centerx, y.centery+210), 7, 7)
  270.             pygame.draw.circle(SCREEN, (255, 0, 255), (y.centerx, y.centery+230), 7, 7)
  271.            
  272.             for x, z in GOLONGI:
  273.                 tempotempy.append(x)
  274.                
  275.             if not LONGIbdys.index(y) in tempotempy and tempodo < 1:
  276.                 GOLONGI.append([LONGIbdys.index(y), 0])
  277.                 tempodo += 1
  278.  
  279.            
  280.            
  281.  
  282.  
  283.         for x, y in GOLONGI:
  284.             if y == FREQ:
  285.                
  286.                 GOLONGI[GOLONGI.index([x, y])][1] = 0
  287.                 LONGIbdys[x][0] = ORIGINALS[x][0] - int(AMPLITUDE/3 *(math.sin((2*math.pi) * float (float(y)/float(FREQ)))))
  288.                 GOLONGI[GOLONGI.index([x, 0])][1] += 1
  289.             else:
  290.  
  291.                 LONGIbdys[x][0] = ORIGINALS[x][0] - int(AMPLITUDE/3 *(math.sin((2*math.pi) * float (float(y)/float(FREQ)))))
  292.  
  293.                 GOLONGI[GOLONGI.index([x, y])][1] += 1
  294.                                
  295.                    
  296.     return LONGIbdys
  297.    
  298.    
  299.  
  300. def Reset(Type):
  301.     global AMPLITUDE, AMPLITUDE2, FREQUENCY, FREQUENCY2, WAVELENGTH, WAVELENGTH2,WAVEVELOCITY, WAVEVELOCITY2, STARTINGPOS, POINTS, FREQ, STARTINGPOS2, POINTS2,FREQ2, POINTSINTERFERE, a, ab, INTERFERE, DEFLECT, LONGITUDINAL
  302.     #Wave propertiess:
  303.     if Type == "All":
  304.         AMPLITUDE = 130
  305.         FREQUENCY = 2
  306.         WAVELENGTH= 114
  307.  
  308.         AMPLITUDE2= 0
  309.         FREQUENCY2= 2
  310.         WAVELENGTH2= 114
  311.  
  312.         ORIGINALS=[]
  313.         GOLONGI=[]
  314.         COHERENTIZE = False
  315.         SHOW_B    = False
  316.         JUST_A_VALYAH = 0
  317.         LONGITUDINALheight = 100
  318.         NOOFLONGILINES = 70
  319.         WAVEVELOCITY = FREQUENCY * WAVELENGTH
  320.         WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  321.         INTERFERE = False
  322.         DEFLECT   = False
  323.         LONGITUDINAL=False
  324.  
  325.  
  326.     #OTHER VARS
  327.     STARTINGPOS = (SCREEN.get_rect().right - 10, SCREEN.get_rect().centery)
  328.     POINTS      = []
  329.     FREQ = int(float(FPS) / float(FREQUENCY))
  330.  
  331.     STARTINGPOS2 = (SCREEN.get_rect().right - 10, SCREEN.get_rect().centery)
  332.     POINTS2      = []
  333.     FREQ2 = int(float(FPS) / float(FREQUENCY2))
  334.  
  335.     POINTSINTERFERE = []
  336.     R_POINTS      = []
  337.     #END
  338.     #end
  339.  
  340.     a = 0
  341.     ab = 0
  342.     R_a= 0
  343. def collide_w_mouse(x, y, recto):
  344.     rect =pygame.Rect(recto)
  345.     if (x > rect.left) and (x < rect.right) and (y > rect.top) and (y < rect.bottom):
  346.         return True
  347.     else:
  348.         return False
  349. def draw_inc_dec_buttons(window, bdy, buttontype, color):
  350.  
  351.     if buttontype == 0:
  352.         pygame.draw.rect(window, color, bdy, 2)
  353.        
  354.         pygame.draw.line(window, (255,255,255), (bdy[0]+2, (bdy[1]+(bdy[3]/2))), (bdy[0]+bdy[2]-2,(bdy[1]+(bdy[3]/2))), 1)
  355.         pygame.draw.line(window, (255,255,255), ((bdy[0]+(bdy[2]/2)), bdy[1]+2), ((bdy[0]+(bdy[2]/2)),bdy[1]+bdy[3]-2), 1)
  356.     if buttontype == 1:
  357.         pygame.draw.rect(window, color, bdy, 2)
  358.         pygame.draw.line(window, (255,255,255), (bdy[0]+2, (bdy[1]+(bdy[3]/2))), (bdy[0]+bdy[2]-2,(bdy[1]+(bdy[3]/2))))
  359.     if buttontype == 2:
  360.         pygame.draw.rect(window, color, bdy, 2)
  361.        
  362.         pygame.draw.line(window, (255,255,255), (bdy[0]+2, (bdy[1]+(bdy[3]/2))), (bdy[0]+(bdy[2]/2)-2,(bdy[1]+(bdy[3]/2))), 1)
  363.         pygame.draw.line(window, (255,255,255), ((bdy[0]+(bdy[2]/4)), bdy[1]+2), ((bdy[0]+(bdy[2]/4)),bdy[1]+bdy[3]-1), 1)
  364.  
  365.         pygame.draw.line(window, (255,255,255), (bdy[0]+(bdy[2]/2)+2, (bdy[1]+(bdy[3]/2))), (bdy[0]+bdy[2]-2,(bdy[1]+(bdy[3]/2))), 1)
  366.         pygame.draw.line(window, (255,255,255), ((bdy[0]+((bdy[2]/2)+(bdy[2]/4))), bdy[1]+2), ((bdy[0]+((bdy[2]/2)+(bdy[2]/4))),bdy[1]+bdy[3]-1), 1)
  367.  
  368.     if buttontype == 3:
  369.         pygame.draw.rect(window, color, bdy, 2)
  370.        
  371.         pygame.draw.line(window, (255,255,255), (bdy[0]+2, (bdy[1]+(bdy[3]/2))), (bdy[0]+(bdy[2]/2)-2,(bdy[1]+(bdy[3]/2))), 1)
  372.         pygame.draw.line(window, (255,255,255), (bdy[0]+(bdy[2]/2)+2, (bdy[1]+(bdy[3]/2))), (bdy[0]+bdy[2]-2,(bdy[1]+(bdy[3]/2))), 1)
  373.     if buttontype == 4:
  374.         pygame.draw.rect(window, color, bdy, 2)
  375.         if INTERFERE == True:
  376.             pygame.draw.lines(window, (255,255,255), False, [(bdy[0]+2, bdy[1]+2), (bdy[0]+6, bdy[1]+bdy[3])  ,(bdy[0]+bdy[2], bdy[1])], 2)
  377.     if buttontype == 5:
  378.         pygame.draw.rect(window, color, bdy, 2)
  379.         if DEFLECT == True:
  380.             pygame.draw.lines(window, (255,255,255), False, [(bdy[0]+2, bdy[1]+2), (bdy[0]+6, bdy[1]+bdy[3])  ,(bdy[0]+bdy[2], bdy[1])], 2)
  381.     if buttontype == 6:
  382.         pygame.draw.rect(window, color, bdy, 2)
  383.         if LONGITUDINAL == True:
  384.             pygame.draw.lines(window, (255,255,255), False, [(bdy[0]+2, bdy[1]+2), (bdy[0]+6, bdy[1]+bdy[3])  ,(bdy[0]+bdy[2], bdy[1])], 2)
  385.     if buttontype == 7:
  386.         pygame.draw.rect(window, color, bdy, 2)
  387.         pygame.draw.line(window, (255,255,255), (bdy[0]+8, (bdy[1]+(bdy[3]/2))), (bdy[0]+bdy[2]-8,(bdy[1]+(bdy[3]/2))), 6)
  388.     if buttontype == 8:
  389.         pygame.draw.rect(window, color, bdy, 2)
  390.         pygame.draw.line(window, (255,0,0), (bdy[0]+5, bdy[1]+2), (bdy[0]+bdy[2]-5,(bdy[1]+bdy[3]-2)), 2)
  391.         pygame.draw.line(window, (255,0,0), ((bdy[0]+5), bdy[1]+bdy[3]-2), (bdy[0]+bdy[2]-5, bdy[1]+2), 2)
  392.     if buttontype == 9:
  393.         pygame.draw.rect(window, color, bdy, 2)
  394.         if SHOW_B == True:
  395.             pygame.draw.lines(window, (255,255,255), False, [(bdy[0]+2, bdy[1]+2), (bdy[0]+6, bdy[1]+bdy[3])  ,(bdy[0]+bdy[2], bdy[1])], 2)
  396.     if buttontype == 10:
  397.         pygame.draw.rect(window, color, bdy, 2)
  398.         if PAUSE == False:
  399.             pygame.draw.lines(window, (255,255,255), False, [(bdy[0]+2, bdy[1]+2), (bdy[0]+6, bdy[1]+bdy[3])  ,(bdy[0]+bdy[2], bdy[1])], 2)
  400.    
  401.                          
  402. def blit_everything():
  403.  
  404.     SCREEN.blit(VTEXT, VTEXTbdy)
  405.     SCREEN.blit(WTEXT, WTEXTbdy)
  406.        
  407.     SCREEN.blit(FTEXT, FTEXTbdy)
  408.     if LONGITUDINAL:
  409.         SCREEN.blit(ATEXTL, ATEXTbdy)
  410.     else:
  411.         SCREEN.blit(ATEXT, ATEXTbdy)
  412.     SCREEN.blit(PXTEXT, PXTEXTbdy)
  413.  
  414.     SCREEN.blit(VTEXT, VTEXTbdy2)
  415.     SCREEN.blit(FTEXT, FTEXTbdy2)
  416.     SCREEN.blit(ATEXT, ATEXTbdy2)
  417.     SCREEN.blit(WTEXT, WTEXTbdy2)
  418.    
  419.  
  420.     SCREEN.blit(V, Vbdy)
  421.     SCREEN.blit(A, Abdy)
  422.     SCREEN.blit(W, Wbdy)
  423.     SCREEN.blit(F, Fbdy)
  424.     SCREEN.blit(V2, Vbdy2)
  425.     SCREEN.blit(A2, Abdy2)
  426.     SCREEN.blit(W2, Wbdy2)
  427.     SCREEN.blit(F2, Fbdy2)
  428.  
  429.     SCREEN.blit(WAVEATEXT, WAVEATEXTbdy)
  430.     SCREEN.blit(WAVEBTEXT, WAVEBTEXTbdy)
  431.  
  432.     SCREEN.blit(NTEXT, NTEXTbdy)
  433.  
  434.     SCREEN.blit(ITEXT, ITEXTbdy)
  435.     SCREEN.blit(DTEXT, DTEXTbdy)
  436.     SCREEN.blit(LTEXT, LTEXTbdy)
  437.     SCREEN.blit(CTEXT, CTEXTbdy)
  438.     if LONGITUDINAL:
  439.         SCREEN.blit(L0TEXT, L0TEXTbdy)
  440.         SCREEN.blit(L1TEXT, L1TEXTbdy)
  441.         SCREEN.blit(L2TEXT, L2TEXTbdy)
  442.     SCREEN.blit(RTEXT, RTEXTbdy)
  443.     SCREEN.blit(R2TEXT, R2TEXTbdy)
  444.  
  445.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[0], 0, (255, 0, 0))
  446.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[1], 1, (255, 0, 0))
  447.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[2], 2, (255, 0, 0))
  448.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[3], 3, (255, 0, 0))
  449.     if LONGITUDINAL == False:
  450.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[4], 0, (255, 0, 0))
  451.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[5], 1, (255, 0, 0))
  452.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[6], 2, (255, 0, 0))
  453.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[7], 3, (255, 0, 0))
  454.     else:
  455.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[4], 0, (84, 84, 84))
  456.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[5], 1, (84, 84, 84))
  457.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[6], 2, (84, 84, 84))
  458.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[7], 3, (84, 84, 84))
  459.  
  460.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[8], 0, (255, 0, 0))
  461.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[9], 1, (255, 0, 0))
  462.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[10], 2, (255, 0, 0))
  463.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[11], 3, (255, 0, 0))
  464.  
  465.    
  466.  
  467.     if DEFLECT == False and LONGITUDINAL == False and SHOW_B:
  468.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[12], 0, (255, 0, 0))
  469.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[13], 1, (255, 0, 0))
  470.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[14], 2, (255, 0, 0))
  471.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[15], 3, (255, 0, 0))
  472.  
  473.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[16], 0, (255, 0, 0))
  474.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[17], 1, (255, 0, 0))
  475.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[18], 2, (255, 0, 0))
  476.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[19], 3, (255, 0, 0))
  477.  
  478.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[20], 0, (255, 0, 0))
  479.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[21], 1, (255, 0, 0))
  480.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[22], 2, (255, 0, 0))
  481.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[23], 3, (255, 0, 0))
  482.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[31], 9, (0,255,0))
  483.     elif DEFLECT or LONGITUDINAL or SHOW_B == False:
  484.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[12], 0, (84, 84, 84))
  485.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[13], 1, (84, 84, 84))
  486.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[14], 2, (84, 84, 84))
  487.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[15], 3, (84, 84, 84))
  488.  
  489.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[16], 0, (84, 84, 84))
  490.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[17], 1, (84, 84, 84))
  491.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[18], 2, (84, 84, 84))
  492.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[19], 3, (84, 84, 84))
  493.  
  494.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[20], 0, (84, 84, 84))
  495.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[21], 1, (84, 84, 84))
  496.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[22], 2, (84, 84, 84))
  497.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[23], 3, (84, 84, 84))
  498.            
  499.  
  500.  
  501.  
  502.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[24], 4, (255,0  ,255))
  503.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[25], 5, (255,255,0  ))
  504.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[26], 6, (0  ,255,255))
  505.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[27], 7, (255,255,255))
  506.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[28], 7, (255,255,255))
  507.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[29], 8, (255,0,0))
  508.     draw_inc_dec_buttons(SCREEN, BUTTONBDYS[30], 7, (128,255,128))
  509.     if SHOW_B == False and (DEFLECT or LONGITUDINAL):
  510.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[31], 9, (84,84,84))
  511.     else:
  512.         draw_inc_dec_buttons(SCREEN, BUTTONBDYS[31], 9, (0,255,0))
  513.  
  514. def createinterference(POINTS, POINTS2):
  515.     POINTS3 = POINTS + POINTS2
  516.     POINTS3.sort()
  517.     FINAL =[]
  518.     temp = []
  519.     NOTNOW = False
  520.     for aq in POINTS3:
  521.         if temp != []:
  522.             NOTNOW = False
  523.         if temp == []:
  524.             temp.append(aq)
  525.             NOTNOW = True
  526.         if not NOTNOW:
  527.             for bq in temp:
  528.                 if aq[0]-bq[0] == 0:
  529.                     temp = [(aq[0], aq[1]+bq[1]-STARTINGPOS[1])]
  530.                     FINAL += temp
  531.                     temp=[]    
  532.                 else:
  533.                     temp= [bq]
  534.                     #FINAL += temp
  535.                     temp =[]
  536.                     NOTNOW = True
  537.     return sorted(FINAL)
  538.            
  539.            
  540.            
  541.        
  542. a = 0
  543. ab = 0
  544. R_a = 0
  545. RESET = False
  546. DEFLECTion = False
  547. LONGIbdys=[]
  548. while True:
  549.     if RESET == "Screen":
  550.         Reset(RESET)
  551.         RESET = False
  552.     if RESET == "All":
  553.         Reset(RESET)
  554.         RESET = False
  555.     if COHERENTIZE == True:
  556.         a = 0
  557.         ab = 0
  558.         COHERENTIZE = False
  559.     if a == FREQ:
  560.         a = 0
  561.     if R_a == FREQ:
  562.         R_a = 0
  563.     if ab == FREQ2:
  564.         ab = 0
  565.     if LONGITUDINAL == False:
  566.         V= FONT.render(str(WAVEVELOCITY), True, (255, 255, 255))
  567.     else:
  568.         V= FONT.render(str(1400), True, (255, 0, 0))
  569.     Vbdy = V.get_rect()
  570.     Vbdy.left = VTEXTbdy.right + 30
  571.     Vbdy.centery=VTEXTbdy.centery
  572.  
  573.     A= FONT.render(str(AMPLITUDE), True, (255, 255, 255))
  574.     Abdy = A.get_rect()
  575.     Abdy.left = ATEXTbdy.right + 30
  576.     Abdy.centery=ATEXTbdy.centery
  577.  
  578.     F= FONT.render(str(FREQUENCY), True, (255, 255, 255))
  579.     Fbdy = F.get_rect()
  580.     Fbdy.left = FTEXTbdy.right + 12
  581.     Fbdy.centery=FTEXTbdy.centery
  582.     if LONGITUDINAL == False:
  583.         W= FONT.render(str(WAVELENGTH), True, (255, 255, 255))
  584.     else:
  585.         W= FONT.render(str(1400/FREQUENCY), True, (255, 0, 0))
  586.     Wbdy = W.get_rect()
  587.     Wbdy.left = WTEXTbdy.right + 50
  588.     Wbdy.centery=WTEXTbdy.centery
  589.  
  590.  
  591.     V2= FONT.render(str(WAVEVELOCITY2), True, (255, 255, 255))
  592.     Vbdy2 = V2.get_rect()
  593.     Vbdy2.left = VTEXTbdy2.right + 30
  594.     Vbdy2.centery=VTEXTbdy2.centery
  595.  
  596.     A2= FONT.render(str(AMPLITUDE2), True, (255, 255, 255))
  597.     Abdy2 = A2.get_rect()
  598.     Abdy2.left = ATEXTbdy2.right + 30
  599.     Abdy2.centery=ATEXTbdy2.centery
  600.  
  601.     F2= FONT.render(str(FREQUENCY2), True, (255, 255, 255))
  602.     Fbdy2 = F2.get_rect()
  603.     Fbdy2.left = FTEXTbdy2.right + 12
  604.     Fbdy2.centery=FTEXTbdy2.centery
  605.  
  606.     W2= FONT.render(str(WAVELENGTH2), True, (255, 255, 255))
  607.     Wbdy2 = W2.get_rect()
  608.     Wbdy2.left = WTEXTbdy2.right + 50
  609.     Wbdy2.centery=WTEXTbdy2.centery
  610.     for event in pygame.event.get():
  611.         if event.type == QUIT:
  612.             pygame.quit()
  613.             sys.exit()
  614.         if event.type == KEYDOWN:
  615.             if event.key == K_F1:
  616.                 pause()
  617.  
  618.         if event.type == MOUSEBUTTONDOWN:
  619.             if event.button == 1:
  620.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[0]) and AMPLITUDE < 380:
  621.                     AMPLITUDE += 10
  622.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[1]) and AMPLITUDE > -380:
  623.                     AMPLITUDE -= 10
  624.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[2]) and AMPLITUDE < 370:
  625.                     AMPLITUDE += 20
  626.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[3]) and AMPLITUDE > -370:
  627.                     AMPLITUDE -= 20
  628.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[4]):
  629.                     WAVELENGTH += 19
  630.                     WAVEVELOCITY = FREQUENCY * WAVELENGTH
  631.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[5]) and WAVELENGTH > 19:
  632.                     WAVELENGTH -= 19
  633.                     WAVEVELOCITY = FREQUENCY * WAVELENGTH
  634.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[6]):
  635.                     WAVELENGTH += 38
  636.                     WAVEVELOCITY = FREQUENCY * WAVELENGTH
  637.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[7]) and WAVELENGTH > 38:
  638.                     WAVELENGTH -= 38
  639.                     WAVEVELOCITY = abs(FREQUENCY * WAVELENGTH)
  640.                    
  641.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[8]) and FREQUENCY < 12:
  642.                     FREQUENCY += 1
  643.                     FREQ = int(float(FPS) / float(FREQUENCY))
  644.                     if LONGITUDINAL:
  645.                         LONGIbdys = []
  646.                         WAVELENGTH = 1400/FREQUENCY
  647.                     WAVEVELOCITY = FREQUENCY * WAVELENGTH
  648.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[9]) and FREQUENCY > 1:
  649.                     FREQUENCY -= 1
  650.                     FREQ = int(float(FPS) / float(FREQUENCY))
  651.                     if LONGITUDINAL:
  652.                         LONGIbdys = []
  653.                         WAVELENGTH = 1400/FREQUENCY
  654.                     WAVEVELOCITY = FREQUENCY * WAVELENGTH
  655.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[10]) and FREQUENCY < 11:
  656.                     FREQUENCY += 2
  657.                     FREQ = int(float(FPS) / float(FREQUENCY))
  658.                     if LONGITUDINAL:
  659.                         LONGIbdys = []
  660.                         WAVELENGTH = 1400/FREQUENCY
  661.                     WAVEVELOCITY = FREQUENCY * WAVELENGTH
  662.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[11]) and FREQUENCY > 2:
  663.                     FREQUENCY -= 2
  664.                     FREQ = int(float(FPS) / float(FREQUENCY))
  665.                     if LONGITUDINAL:
  666.                         LONGIbdys = []
  667.                         WAVELENGTH = 1400/FREQUENCY
  668.                     WAVEVELOCITY = FREQUENCY * WAVELENGTH
  669.                 if DEFLECT == False and LONGITUDINAL == False and SHOW_B:
  670.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[12]) and AMPLITUDE2 < 380:
  671.                         AMPLITUDE2 += 10
  672.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[13]) and AMPLITUDE2 > -380:
  673.                         AMPLITUDE2 -= 10
  674.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[14]) and AMPLITUDE2 < 370:
  675.                         AMPLITUDE2 += 20
  676.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[15]) and AMPLITUDE2 > -370:
  677.                         AMPLITUDE2 -= 20
  678.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[16]):
  679.                         WAVELENGTH2 += 19
  680.                         WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  681.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[17]) and WAVELENGTH2 > 19:
  682.                         WAVELENGTH2 -= 19
  683.                         WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  684.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[18]):
  685.                         WAVELENGTH2 += 38
  686.                         WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  687.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[19]) and WAVELENGTH2 > 38:
  688.                         WAVELENGTH2 -= 38
  689.                         WAVEVELOCITY2 = abs(FREQUENCY2 * WAVELENGTH2)
  690.                        
  691.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[20]) and FREQUENCY2 < 12:
  692.                         FREQUENCY2 += 1
  693.                         FREQ2 = int(float(FPS) / float(FREQUENCY2))
  694.                         WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  695.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[21]) and FREQUENCY2 > 1:
  696.                         FREQUENCY2 -= 1
  697.                         FREQ2 = int(float(FPS) / float(FREQUENCY2))
  698.                         WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  699.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[22]) and FREQUENCY2 < 11:
  700.                         FREQUENCY2 += 2
  701.                         FREQ2 = int(float(FPS) / float(FREQUENCY2))
  702.                         WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  703.                     if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[23]) and FREQUENCY2 > 2:
  704.                         FREQUENCY2 -= 2
  705.                         FREQ2 = int(float(FPS) / float(FREQUENCY2))
  706.                         WAVEVELOCITY2 = FREQUENCY2 * WAVELENGTH2
  707.                    
  708.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[24]):
  709.                     if INTERFERE:
  710.                         INTERFERE = False
  711.                     else:
  712.                         INTERFERE = True
  713.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[25]):
  714.                     if DEFLECT:
  715.                         DEFLECT = False
  716.                     else:
  717.                         DEFLECT = True
  718.                        
  719.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[26]):
  720.                     if LONGITUDINAL:
  721.                         LONGITUDINAL = False
  722.                     else:
  723.                         LONGITUDINAL = True
  724.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[27]):
  725.                     RESET = "All"
  726.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[28]):
  727.                     RESET = "Screen"
  728.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[29]):
  729.                     close()
  730.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[30]):
  731.                     COHERENTIZE = True
  732.                 if  collide_w_mouse(event.pos[0], event.pos[1], BUTTONBDYS[31]) and DEFLECT ==False and LONGITUDINAL == False:
  733.                     if SHOW_B:
  734.                         SHOW_B = False
  735.                     else:
  736.                         SHOW_B = True
  737.  
  738.  
  739.     posy= STARTINGPOS[1] - int(AMPLITUDE *(math.sin((2*math.pi) * float (float(a)/float(FREQ))) )  )
  740.  
  741.  
  742.     posx= STARTINGPOS[0] - (WAVEVELOCITY/FREQUENCY)/FPS
  743.  
  744.     POINTS.append([posx, posy])
  745.     if INTERFERE == False and LONGITUDINAL == False:
  746.         pygame.draw.line(SCREEN, (255, 255, 255), (STARTINGPOS[0], posy), (STARTINGPOS[0], posy), 10)
  747.         pygame.draw.line(SCREEN, (255, 255, 255), STARTINGPOS, (0, SCREEN.get_rect().centery), 2)
  748.    
  749.     if len(POINTS) > 1 and INTERFERE == False and LONGITUDINAL == False:
  750.         pygame.draw.lines(SCREEN, (255, 0, 0), False, POINTS, 5)
  751.     for b in range(len(POINTS)):
  752.         #pygame.draw.line(SCREEN, (255, 0, 0), (b[0], b[1]), (b[0], b[1]), 5)
  753.        
  754.         POINTS[b][0] -= int(float(float(FREQUENCY) * float(WAVELENGTH))/float(FPS))
  755.  
  756.     TEMPVALUE = -1
  757.     for b in range(len(POINTS)):
  758.         TEMPVALUE += 1
  759.         if POINTS[TEMPVALUE][0] < -10 and DEFLECT:
  760.             POINTS[TEMPVALUE][1] = SCREEN.get_rect().height - POINTS[TEMPVALUE][1]
  761.                
  762.             R_POINTS.append(POINTS[TEMPVALUE])
  763.             del POINTS[TEMPVALUE]
  764.             TEMPVALUE -= 1
  765.         elif POINTS[TEMPVALUE][0] < -10:
  766.             del POINTS[TEMPVALUE]
  767.             TEMPVALUE -= 1
  768.     TEMPVALUE = -1
  769.     for b in range(len(R_POINTS)):
  770.         TEMPVALUE += 1
  771.         if R_POINTS[TEMPVALUE][0] > SCREEN.get_rect().width + 10:
  772.             del R_POINTS[TEMPVALUE]
  773.             TEMPVALUE -= 1        
  774.  
  775.  
  776.     posy2= STARTINGPOS2[1] - int(AMPLITUDE2 *(  math.sin((2*math.pi) * float (float(ab)/float(FREQ2)))  )  )
  777.     posx2= STARTINGPOS[0] - (WAVEVELOCITY/FREQUENCY)/FPS
  778.    
  779.     POINTS2.append([posx2, posy2])
  780.     if INTERFERE == False and DEFLECT == False and LONGITUDINAL == False and SHOW_B:
  781.         pygame.draw.line(SCREEN, (255, 255, 255), (STARTINGPOS2[0], posy2), (STARTINGPOS2[0], posy2), 10)
  782.         pygame.draw.line(SCREEN, (255, 255, 255), STARTINGPOS2, (0, SCREEN.get_rect().centery), 2)
  783.     if len(POINTS2) > 1 and INTERFERE == False and DEFLECT == False and LONGITUDINAL == False and SHOW_B:
  784.         pygame.draw.lines(SCREEN, (0, 0, 255), False, POINTS2, 5)
  785.     for b in range(len(POINTS2)):
  786.         #pygame.draw.line(SCREEN, (255, 0, 0), (b[0], b[1]), (b[0], b[1]), 5)
  787.        
  788.         POINTS2[b][0] -= int(float(float(FREQUENCY2) * float(WAVELENGTH2))/float(FPS))
  789.     TEMPVALUE2 = -1
  790.     for b in range(len(POINTS2)):
  791.         TEMPVALUE2 += 1
  792.         if POINTS2[TEMPVALUE2][0] < -10:
  793.             del POINTS2[TEMPVALUE2]
  794.             TEMPVALUE2 -= 1
  795.  
  796.     if DEFLECT == True and LONGITUDINAL == False:
  797.  
  798.         if JUST_A_VALYAH ==1:
  799.             pygame.draw.rect(SCREEN, (255, 255, 255), (0, 192, 5, 384), 5)
  800.             JUST_A_VALYAH = 0
  801.         elif JUST_A_VALYAH == 0:
  802.             pygame.draw.rect(SCREEN, (255, 0, 0), (0, 192, 5, 384), 5)
  803.             JUST_A_VALYAH = 1
  804.         if len(R_POINTS) > 1 and INTERFERE == False:
  805.             pygame.draw.lines(SCREEN, (255, 255, 255), False, R_POINTS[::-1], 5)
  806.         for b in range(len(R_POINTS)):
  807.         #pygame.draw.line(SCREEN, (255, 0, 0), (b[0], b[1]), (b[0], b[1]), 5)
  808.        
  809.             R_POINTS[b][0] += int(float(float(FREQUENCY) * float(WAVELENGTH))/float(FPS))
  810.        
  811.     else:
  812.         R_POINTS = []
  813.  
  814.     if INTERFERE == True  and LONGITUDINAL == False:
  815.         if DEFLECT == False:
  816.             POINTSINTERFERE= createinterference(POINTS, POINTS2)
  817.         else:
  818.             POINTSINTERFERE= createinterference(POINTS, R_POINTS)
  819. #        for val1, val2 in zip(TEMPO1, TEMPO2):
  820. #
  821. #            POINTSINTERFERE.append([val2[0], val1[1]+(val2[1]-STARTINGPOS[1])])
  822.  
  823.        
  824. #        if WAVEVELOCITY == WAVEVELOCITY2:
  825. #            for val1, val2 in zip(POINTS, POINTS2):
  826. #                POINTSINTERFERE.append([val2[0], val1[1]+(val2[1]-STARTINGPOS[1])])
  827. #        else:
  828. #            SCREEN.blit(ERTEXT, ERTEXTbdy)
  829. #            SCREEN.blit(ERTEXT2, ERTEXT2bdy)
  830.  
  831.         if len(POINTSINTERFERE) > 1:
  832.             pygame.draw.lines(SCREEN, (255, 0, 255), False, POINTSINTERFERE, 5)
  833.         pygame.draw.line(SCREEN, (255, 255, 255), STARTINGPOS2, (0, SCREEN.get_rect().centery), 2)
  834.  
  835.  
  836.  
  837.     if LONGITUDINAL == True:
  838.         #LONGposx= STARTINGPOS[0] - int(AMPLITUDE/9 *(math.sin((2*math.pi) * float (float(a)/float(FREQ))) ))
  839.         #LONGgenbdy= pygame.Rect(LONGposx-32, SCREEN.get_rect().centery-LONGITUDINALheight/2, 20,LONGITUDINALheight)
  840.         if len(LONGIbdys) == 0:
  841.             LONGIbdys = drawlongi(True,FREQ)
  842.         else:
  843.             LONGIbdys = drawlongi(False,FREQ)
  844.            
  845.        
  846.         #pygame.draw.line(SCREEN, (255, 255, 255), (LONGposx-32, SCREEN.get_rect().centery-LONGITUDINALheight/2), (LONGposx-32, SCREEN.get_rect().centery+LONGITUDINALheight/2), 10)
  847.  
  848.            
  849.     blit_everything()
  850.  
  851.                      
  852.  
  853.  
  854.     pygame.mouse.set_cursor(*pygame.cursors.broken_x)
  855.     pygame.display.flip()
  856.     FPS_CLOCK.tick(FPS)
  857.     SCREEN.fill((0, 0, 0))
  858.     a += 1
  859.     ab += 1
  860.     if DEFLECT == True and POINTS[0][0] < 0:
  861.         R_a += 1
  862.     else:
  863.         R_a = 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement