Advertisement
Mr-A

The A-Atom Simulator: Bhor's Model

Apr 18th, 2013
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 18.68 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. class SIN:
  12.     def sin(self, x):
  13.         return math.sin(math.radians(x))
  14.     def inv(self, x):
  15.         return math.degrees(math.asin(math.radians(x)))
  16.  
  17.        
  18.  
  19. class SIM:
  20.     global SIN
  21.     def __init__(self):A
  22.         self.FPS = 100
  23.         self.FPS_CLOCK = pygame.time.Clock()
  24.         pygame.init()
  25.         self.SCREEN = pygame.display.set_mode((900, 670))
  26.         pygame.display.set_caption("The A-Atom Simulator: Bhor's Model")
  27.  
  28.         self.E_COLORS = [(0, 0, 255), (0, 0, 128)]
  29.         self.ELECTRONSET = []
  30.  
  31.         self.P_COLORS = [(255, 0, 0), (128, 0, 0)]
  32.         self.PROTONSET = []
  33.        
  34.  
  35.         self.CHARGE = 4.0
  36.  
  37.         self.FONT = pygame.font.SysFont(None, 20, False, False)
  38.         self.CFONT = pygame.font.SysFont(None, 12, False, False)
  39.        
  40.         self.RTEXT= self.FONT.render("Reset All: ", True, (0, 255, 0))
  41.         self.RTEXTbdy = self.RTEXT.get_rect()
  42.         self.RTEXTbdy.right = self.SCREEN.get_rect().right - 95
  43.         self.RTEXTbdy.top=self.SCREEN.get_rect().top + 10
  44.  
  45.         self.CTEXT= self.CFONT.render("By A-Studios. All Rights Reserved. (c)2012-2013", True, (255, 255, 0))
  46.         self.CTEXTbdy = self.CTEXT.get_rect()
  47.         self.CTEXTbdy.right = self.SCREEN.get_rect().right - 10
  48.         self.CTEXTbdy.bottom=self.SCREEN.get_rect().bottom - 7
  49.  
  50.  
  51.         self.PNTEXT= self.FONT.render("Positive Nucleon mass: ", True, (0, 255, 0))
  52.         self.PNTEXTbdy = self.PNTEXT.get_rect()
  53.         self.PNTEXTbdy.left = self.SCREEN.get_rect().left + 10
  54.         self.PNTEXTbdy.bottom=self.SCREEN.get_rect().bottom - 15
  55.  
  56.         self.APNTEXT= self.FONT.render("Allow repulsion between Nucleons: ", True, (0, 255, 0))
  57.         self.APNTEXTbdy = self.APNTEXT.get_rect()
  58.         self.APNTEXTbdy.left = self.SCREEN.get_rect().left + 10
  59.         self.APNTEXTbdy.bottom=self.SCREEN.get_rect().bottom - 35
  60.  
  61.         self.BAPNTEXT= self.FONT.render("Allow Electrons bypass Nucleons: ", True, (0, 255, 0))
  62.         self.BAPNTEXTbdy = self.BAPNTEXT.get_rect()
  63.         self.BAPNTEXTbdy.left = self.SCREEN.get_rect().left + 10
  64.         self.BAPNTEXTbdy.bottom=self.SCREEN.get_rect().bottom - 55
  65.  
  66.         self.NAPNTEXT= self.FONT.render("No. of active Nucleons: ", True, (0, 255, 0))
  67.         self.NAPNTEXTbdy = self.NAPNTEXT.get_rect()
  68.         self.NAPNTEXTbdy.left = self.SCREEN.get_rect().left + 400
  69.         self.NAPNTEXTbdy.bottom=self.SCREEN.get_rect().bottom - 35
  70.  
  71.         self.NAENTEXT= self.FONT.render("No. of active Electrons: ", True, (0, 255, 0))
  72.         self.NAENTEXTbdy = self.NAENTEXT.get_rect()
  73.         self.NAENTEXTbdy.left = self.SCREEN.get_rect().left + 400
  74.         self.NAENTEXTbdy.bottom=self.SCREEN.get_rect().bottom - 15
  75.        
  76.         self.BUTTONBDYS = []
  77.         self.BUTTONBDYS.append((self.SCREEN.get_rect().right - 90,self.SCREEN.get_rect().top+10, 20, 15))    #RESET all
  78.         self.BUTTONBDYS.append((self.SCREEN.get_rect().right - 40,self.SCREEN.get_rect().top+10, 20, 15))    #CLOSE X
  79.  
  80.         self.BUTTONBDYS.append((self.PNTEXTbdy[0]+200+17+17,self.PNTEXTbdy[1], 24, 12))
  81.         self.BUTTONBDYS.append((self.PNTEXTbdy[0]+200+17+17+29,self.PNTEXTbdy[1], 24, 12))
  82.         self.BUTTONBDYS.append((self.APNTEXTbdy[0]+200+17+17+15,self.APNTEXTbdy[1]-3, 20, 15))
  83.         self.BUTTONBDYS.append((self.BAPNTEXTbdy[0]+200+17+17+15,self.BAPNTEXTbdy[1]-3, 20, 15))
  84.         #DRAGGIN'
  85.         self.original_pos_E = None
  86.         self.drag_pos_E = None
  87.         self.original_pos_P = None
  88.         self.drag_pos_P = None
  89.         #END;
  90.  
  91.         self.RESET = False
  92.        
  93.         self.KONSTANT = "2 * 10^4"
  94.         self.E_MASS = 4
  95.         self.P_MASS = 40
  96.         self.ALLOW_REPULSION = False
  97.         self.E_BYPASS = False
  98.        
  99.  
  100.         self.KTEXT= self.FONT.render("For k*(Q1*Q2)/(d^2), constant <k> => " + str(self.KONSTANT) + " (N.m^2/C^2)" , True, (255, 255, 255))
  101.         self.KTEXTbdy = self.KTEXT.get_rect()
  102.         self.KTEXTbdy.left = self.SCREEN.get_rect().left + 20
  103.         self.KTEXTbdy.top=self.SCREEN.get_rect().top + 10
  104.         self.KONSTANT = self.KONSTANT.replace("^", "**")
  105.         self.KONSTANT = eval(self.KONSTANT)
  106.        
  107.        
  108.     def collide_w_mouse(self, x, y, recto):
  109.         rect =pygame.Rect(recto)
  110.         if (x > rect.left) and (x < rect.right) and (y > rect.top) and (y < rect.bottom):
  111.             return True
  112.         else:
  113.             return False
  114.  
  115.     def draw_inc_dec_buttons(self, window, bdy, buttontype, color):
  116.  
  117.         if buttontype == 0:
  118.             pygame.draw.rect(window, color, bdy, 2)
  119.            
  120.             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)
  121.             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)
  122.         if buttontype == 1:
  123.             pygame.draw.rect(window, color, bdy, 2)
  124.             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))))
  125.         if buttontype == 2:
  126.             pygame.draw.rect(window, color, bdy, 2)
  127.            
  128.             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)
  129.             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)
  130.  
  131.             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)
  132.             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)
  133.  
  134.         if buttontype == 3:
  135.             pygame.draw.rect(window, color, bdy, 2)
  136.            
  137.             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)
  138.             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)
  139.         if buttontype == 4:
  140.             pygame.draw.rect(window, color, bdy, 2)
  141.             if self.E_BYPASS:
  142.                 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)
  143.         if buttontype == 5:
  144.             pygame.draw.rect(window, color, bdy, 2)
  145.             if DEFLECT == True:
  146.                 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)
  147.         if buttontype == 6:
  148.             pygame.draw.rect(window, color, bdy, 2)
  149.             if LONGITUDINAL == True:
  150.                 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)
  151.         if buttontype == 7:
  152.             pygame.draw.rect(window, color, bdy, 2)
  153.             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)
  154.         if buttontype == 8:
  155.             pygame.draw.rect(window, color, bdy, 2)
  156.             pygame.draw.line(window, (255,0,0), (bdy[0]+5, bdy[1]+2), (bdy[0]+bdy[2]-5,(bdy[1]+bdy[3]-2)), 2)
  157.             pygame.draw.line(window, (255,0,0), ((bdy[0]+5), bdy[1]+bdy[3]-2), (bdy[0]+bdy[2]-5, bdy[1]+2), 2)
  158.         if buttontype == 9:
  159.             pygame.draw.rect(window, color, bdy, 2)
  160.             if self.ALLOW_REPULSION == True:
  161.                 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)
  162.         if buttontype == 10:
  163.             pygame.draw.rect(window, color, bdy, 2)
  164.             if PAUSE == False:
  165.                 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)
  166.      
  167.        
  168.     def draw_ELECTRON(self, posx, posy):
  169.         pygame.draw.circle(self.SCREEN, self.E_COLORS[0], (posx, posy), 7, 7)
  170.     def draw_PROTON(self, posx, posy):
  171.         pygame.draw.circle(self.SCREEN, self.P_COLORS[0], (posx, posy), 12, 12)
  172.  
  173.     def cal_acceleration(self, axis, pos, pos2, charge):
  174.         Dx = float(pos[0] - pos2[0])
  175.         Dy = float(pos[1] - pos2[1])
  176.         s  = float(math.sqrt((Dx**2)+(Dy**2)))
  177.         if s < 60: s = 60
  178.         F = float(self.KONSTANT*(self.CHARGE**2)/(s**2))
  179.         if charge == "++":
  180.             a =  float(-F / self.P_MASS)
  181.         elif charge == "--":
  182.             a = float(F / self.E_MASS)
  183.         #print a
  184.         XComponent = float(Dx/s)
  185.         YComponent = float(Dy/s)
  186.         if axis == "x":
  187.             return  - (a * XComponent)
  188.         else:
  189.             return - (a * YComponent)
  190.                
  191.  
  192.         #return int((self.CHARGE**2) /math.sqrt(((pos[0]-pos2[0])**2)+((pos[1]-pos2[1]))**2))
  193.     def set_D_vars(self):
  194.         self.P_M= self.FONT.render(str(self.P_MASS), True, (255, 255, 255))
  195.         self.P_Mbdy = self.P_M.get_rect()
  196.         self.P_Mbdy.left = self.PNTEXTbdy.right + 20
  197.         self.P_Mbdy.bottom=self.PNTEXTbdy.bottom
  198.  
  199.         self.N_P= self.FONT.render(str(len(self.PROTONSET)), True, (255, 255, 255))
  200.         self.N_Pbdy = self.N_P.get_rect()
  201.         self.N_Pbdy.left = self.NAPNTEXTbdy.right + 15
  202.         self.N_Pbdy.bottom=self.NAPNTEXTbdy.bottom
  203.  
  204.         self.N_E= self.FONT.render(str(len(self.ELECTRONSET)), True, (255, 255, 255))
  205.         self.N_Ebdy = self.N_E.get_rect()
  206.         self.N_Ebdy.left = self.NAENTEXTbdy.right + 10
  207.         self.N_Ebdy.bottom=self.NAENTEXTbdy.bottom
  208.  
  209.        
  210.        
  211.     def main(self):
  212.         while True:
  213.             self.set_D_vars()
  214.            
  215.             if self.RESET == True:
  216.                 self.ELECTRONSET = []
  217.                 self.PROTONSET = []
  218.                 self.original_pos_E = None
  219.                 self.drag_pos_E = None
  220.                 self.original_pos_P = None
  221.                 self.drag_pos_P = None
  222.                 self.RESET = False
  223.                
  224.             for event in pygame.event.get():
  225.                 if event.type == pygame.QUIT:
  226.                     pygame.quit()
  227.                     sys.exit()
  228.                 if event.type == MOUSEBUTTONDOWN:
  229.                     if event.button == 1:
  230.                         if  self.collide_w_mouse(event.pos[0], event.pos[1], self.BUTTONBDYS[1]):
  231.                             pygame.quit()
  232.                             sys.exit()
  233.  
  234.                         elif self.collide_w_mouse(event.pos[0], event.pos[1], self.BUTTONBDYS[0]):
  235.                             self.RESET = True
  236.                
  237.                         elif self.collide_w_mouse(event.pos[0], event.pos[1], self.BUTTONBDYS[2]) and self.P_MASS < 1020:
  238.                             self.P_MASS += 30                        
  239.                         elif self.collide_w_mouse(event.pos[0], event.pos[1], self.BUTTONBDYS[3]) and self.P_MASS > 30:
  240.                             self.P_MASS -= 30
  241.                         elif self.collide_w_mouse(event.pos[0], event.pos[1], self.BUTTONBDYS[4]):
  242.                             if self.ALLOW_REPULSION:
  243.                                 self.ALLOW_REPULSION = False
  244.                             else:
  245.                                 self.ALLOW_REPULSION = True
  246.                         elif self.collide_w_mouse(event.pos[0], event.pos[1], self.BUTTONBDYS[5]):
  247.                             if self.E_BYPASS:
  248.                                 self.E_BYPASS = False
  249.                             else:
  250.                                 self.E_BYPASS = True
  251.                        
  252.                         else:
  253.                             self.original_pos_E = ((event.pos[0], event.pos[1]))
  254.                     if event.button == 3:
  255.                         self.original_pos_P = ((event.pos[0], event.pos[1]))
  256.                 if event.type == MOUSEMOTION:
  257.                     if self.original_pos_E != None:
  258.                         self.drag_pos_E = ((event.pos[0], event.pos[1]))
  259.                     if self.original_pos_P != None:
  260.                         self.drag_pos_P = ((event.pos[0], event.pos[1]))
  261.  
  262.                 if event.type == MOUSEBUTTONUP:
  263.                     if event.button == 1:
  264.                         if  self.collide_w_mouse(event.pos[0], event.pos[1], self.BUTTONBDYS[1]):
  265.                             pygame.quit()
  266.                             sys.exit()
  267.  
  268.                         elif self.collide_w_mouse(event.pos[0], event.pos[1], self.BUTTONBDYS[0]):
  269.                             self.RESET = True
  270.                         else:
  271.                             if self.original_pos_E != None:
  272.                                 self.ELECTRONSET.append([self.original_pos_E[0], self.original_pos_E[1], 0, 0])
  273.                             if self.drag_pos_E != None:
  274.                                 self.ELECTRONSET[self.ELECTRONSET.index([self.original_pos_E[0], self.original_pos_E[1], 0, 0])] = [self.original_pos_E[0], self.original_pos_E[1], self.drag_pos_E[0]-self.original_pos_E[0],self.drag_pos_E[1]-self.original_pos_E[1]]  
  275.                             self.original_pos_E = None
  276.                             self.drag_pos_E = None
  277.                     if event.button == 3:
  278.                         if self.original_pos_P != None:
  279.                             self.PROTONSET.append([self.original_pos_P[0], self.original_pos_P[1], 0, 0])
  280.                         if self.drag_pos_P != None:
  281.                             self.PROTONSET[self.PROTONSET.index([self.original_pos_P[0], self.original_pos_P[1], 0, 0])] = [self.original_pos_P[0], self.original_pos_P[1], self.drag_pos_P[0]-self.original_pos_P[0],self.drag_pos_P[1]-self.original_pos_P[1]]  
  282.                         self.original_pos_P = None
  283.                         self.drag_pos_P = None
  284.            
  285.                    
  286.             for posx1, posy1, vx1, vy1 in self.ELECTRONSET:
  287.                 posx, posy, vx, vy = posx1, posy1, vx1, vy1
  288.                 self.ELECTRONSET[self.ELECTRONSET.index([posx, posy, vx, vy])][0] += vx/5
  289.                 posx += vx/5
  290.                 self.ELECTRONSET[self.ELECTRONSET.index([posx, posy, vx, vy])][1] += vy/5
  291.                 posy += vy/5
  292.                 for posx2, posy2, vx2, vy2 in self.PROTONSET:
  293.                    
  294.                    
  295.                     self.ELECTRONSET[self.ELECTRONSET.index([posx, posy, vx, vy])][2] += self.cal_acceleration("x", (posx, posy), (posx2, posy2), "--")
  296.                     vx += self.cal_acceleration("x", (posx, posy), (posx2, posy2), "--")
  297.                     self.ELECTRONSET[self.ELECTRONSET.index([posx, posy, vx, vy])][3] += self.cal_acceleration("y", (posx, posy), (posx2, posy2), "--")
  298.                     vy += self.cal_acceleration("y", (posx, posy), (posx2, posy2), "--")
  299.                 self.draw_ELECTRON(int(posx), int(posy))
  300.                 posx, posy, vx, vy = 0, 0, 0, 0
  301.             if self.E_BYPASS == False:
  302.                 for posx1, posy1, vx1, vy1 in self.ELECTRONSET:
  303.                     for posx2, posy2, vx2, vy2 in self.PROTONSET:
  304.                         Dx = float(posx1 - posx2)
  305.                         Dy = float(posy1 - posy2)
  306.                         s  = float(math.sqrt((Dx**2)+(Dy**2)))
  307.                         if s < 13:
  308.                             del self.ELECTRONSET[self.ELECTRONSET.index([posx1, posy1, vx1, vy1])]
  309.                             break
  310.  
  311.             for posx1, posy1, vx1, vy1 in self.PROTONSET:
  312.                 posx, posy, vx, vy = posx1, posy1, vx1, vy1
  313.                 self.PROTONSET[self.PROTONSET.index([posx, posy, vx, vy])][0] += vx/5
  314.                 posx += vx/5
  315.                 self.PROTONSET[self.PROTONSET.index([posx, posy, vx, vy])][1] += vy/5
  316.                
  317.                 posy += vy/5
  318.                 if self.ALLOW_REPULSION:
  319.                     for posx2, posy2, vx2, vy2 in self.PROTONSET:
  320.                         self.PROTONSET[self.PROTONSET.index([posx, posy, vx, vy])][2] += (self.cal_acceleration("x", (posx, posy), (posx2, posy2), "++"))
  321.                         vx += self.cal_acceleration("x", (posx, posy), (posx2, posy2), "++")
  322.                         self.PROTONSET[self.PROTONSET.index([posx, posy, vx, vy])][3] += (self.cal_acceleration("y", (posx, posy), (posx2, posy2), "++"))
  323.                         vy += self.cal_acceleration("y", (posx, posy), (posx2, posy2), "++")
  324.                 self.draw_PROTON(int(posx), int(posy))
  325.                 posx, posy, vx, vy = 0, 0, 0, 0
  326.  
  327.  
  328.             if self.drag_pos_E != None and self.original_pos_E != None:
  329.                 pygame.draw.line(self.SCREEN, (255, 255, 255), self.original_pos_E, self.drag_pos_E, 1)
  330.             if self.drag_pos_P != None and self.original_pos_P != None:
  331.                 pygame.draw.line(self.SCREEN, (255, 255, 255), self.original_pos_P, self.drag_pos_P, 1)
  332.  
  333.             for posx1, posy1, vx1, vy1 in self.ELECTRONSET:
  334.                 if posx1 > 900 or posx1 < -100 or posy1 > 700 or posy1 < -100:
  335.                     del self.ELECTRONSET[self.ELECTRONSET.index([posx1, posy1, vx1, vy1])]
  336.             for posx1, posy1, vx1, vy1 in self.PROTONSET:
  337.                 if posx1 > 900 or posx1 < -100 or posy1 > 700 or posy1 < -100:
  338.                     del self.PROTONSET[self.PROTONSET.index([posx1, posy1, vx1, vy1])]
  339.             self.draw_inc_dec_buttons(self.SCREEN, self.BUTTONBDYS[1], 8, (255,0,0))
  340.             self.draw_inc_dec_buttons(self.SCREEN, self.BUTTONBDYS[0], 7, (255,255,255))
  341.             self.draw_inc_dec_buttons(self.SCREEN, self.BUTTONBDYS[2], 2, (255,255,255))
  342.             self.draw_inc_dec_buttons(self.SCREEN, self.BUTTONBDYS[3], 3, (255,255,255))
  343.             self.draw_inc_dec_buttons(self.SCREEN, self.BUTTONBDYS[4], 9, (255,255,255))
  344.             self.draw_inc_dec_buttons(self.SCREEN, self.BUTTONBDYS[5], 4, (255,255,255))
  345.  
  346.             self.SCREEN.blit(self.RTEXT, self.RTEXTbdy)
  347.             self.SCREEN.blit(self.CTEXT, self.CTEXTbdy)
  348.             self.SCREEN.blit(self.KTEXT, self.KTEXTbdy)
  349.             self.SCREEN.blit(self.PNTEXT, self.PNTEXTbdy)
  350.             self.SCREEN.blit(self.APNTEXT, self.APNTEXTbdy)
  351.             self.SCREEN.blit(self.P_M, self.P_Mbdy)
  352.  
  353.             self.SCREEN.blit(self.NAENTEXT, self.NAENTEXTbdy)
  354.             self.SCREEN.blit(self.NAPNTEXT, self.NAPNTEXTbdy)
  355.             self.SCREEN.blit(self.BAPNTEXT, self.BAPNTEXTbdy)
  356.  
  357.             self.SCREEN.blit(self.N_P, self.N_Pbdy)
  358.             self.SCREEN.blit(self.N_E, self.N_Ebdy)
  359.  
  360.            
  361.             pygame.display.update()
  362.             self.SCREEN.fill((0, 0, 0))
  363.             self.FPS_CLOCK.tick(self.FPS)
  364.             self.E_COLORS = [self.E_COLORS[1], self.E_COLORS[0]]
  365.             self.P_COLORS = [self.P_COLORS[1], self.P_COLORS[0]]
  366.  
  367.  
  368. SIN = SIN()
  369. SIMULATOR = SIM()
  370. SIMULATOR.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement