class main: rows = 8 columns = 7 planeloc = [[0 for x in range(columns)] for y in range(rows)] planeloc[0][0] = 'X' planeloc[0][2] = 'Y' planeloc[3][6] = 'Z' bufferA = [[0 for x in range(columns)] for y in range(rows)] bufferA[0][0] = 'X' bufferA[0][2] = 'Y' bufferA[3][6] = 'Z' bufferB = [[0 for x in range(columns)] for y in range(rows)] bufferC = [[0 for x in range(3)] for y in range(3)] bufferD = [[0 for x in range(3)] for y in range(3)] bufferC[0][0] = 'X' bufferC[0][1] = 'Y' bufferC[0][2] = 'Z' bufferD[0][0] = 'X' bufferD[0][1] = 'Y' bufferD[0][2] = 'Z' # print (bufferA) plane_X = planeX.planeX(0, 0) plane_Y = planeY.planeY(0, 2) plane_Z = planeZ.planeZ(3, 6) p1 = P1.P1(0, plane_X, plane_Y, plane_Z, bufferA, bufferB) p2 = P2.P2(0, bufferC, bufferD) p3 = P3.P3(bufferC, bufferD) for i in range(0, 20): print("") # print("") # print("") # print("TIME ", i+1) # print("") time.sleep(1) #Process 1 work p1.proc1(i, plane_X, plane_Y, plane_Z, bufferA, bufferB) #Process 2 Work if i % 2 is 0: p2.proc2AC(i, bufferA, bufferC) else: p2.proc2BD(i, bufferB, bufferD) #Process 3 Work if i % 2 is 0: p3.checkC(i, bufferC) else: p3.checkD(i, bufferD)
class main: rows = 8 columns = 7 bufferA = [[0 for x in range(7)] for y in range(8)] # Coordinates for X Y Z randomly generated x_xCoor = random.randint(0, rows - 1) x_yCoor = random.randint(0, columns - 1) y_xCoor = random.randint(0, rows - 1) y_yCoor = random.randint(0, columns - 1) z_xCoor = random.randint(0, rows - 1) z_yCoor = random.randint(0, columns - 1) # generate coordinates again if same coordinates if ((x_xCoor == y_xCoor or x_xCoor == z_xCoor or y_xCoor == z_xCoor) and (x_yCoor == y_yCoor or x_yCoor == z_yCoor or y_xCoor == z_xCoor)): x_xCoor = random.randint(0, rows - 1) x_yCoor = random.randint(0, columns - 1) y_xCoor = random.randint(0, rows - 1) y_yCoor = random.randint(0, columns - 1) z_xCoor = random.randint(0, rows - 1) z_yCoor = random.randint(0, columns - 1) bufferA[x_xCoor][x_yCoor] = 'X' bufferA[y_xCoor][y_yCoor] = 'Y' bufferA[z_xCoor][z_yCoor] = 'Z' bufferB = [[0 for x in range(7)] for y in range(8)] bufferC = [[0 for x in range(3)] for y in range(3)] bufferD = [[0 for x in range(3)] for y in range(3)] bufferC[0][0] = 'X' bufferC[0][1] = 'Y' bufferC[0][2] = 'Z' bufferD[0][0] = 'X' bufferD[0][1] = 'Y' bufferD[0][2] = 'Z' time_interval = 1 iterations = 20 semA = threading.Semaphore() semB = threading.Semaphore() semC = threading.Semaphore() semD = threading.Semaphore() plane_X = planeX.planeX(x_xCoor, x_yCoor) plane_Y = planeY.planeY(y_xCoor, y_yCoor) plane_Z = planeZ.planeZ(z_xCoor, z_yCoor) p1 = P1.P1(0, plane_X, plane_Y, plane_Z, bufferA, bufferB, semA, semB) p2 = P2.P2(0, bufferC, bufferD, semA, semB, semC, semD) p3 = P3.P3(bufferC, bufferD, plane_X, plane_Y, plane_Z, z_xCoor, y_yCoor) #thread class declarations i = 0 t1 = threading.Thread(target=p1.proc1, args=(i, plane_X, plane_Y, plane_Z, bufferA, bufferB, semA, semB, semC, semD, time_interval, iterations)) t2 = threading.Thread(target=p2.proc, args=(i, bufferA, bufferB, bufferC, bufferD, semA, semB, semC, semD, time_interval, iterations)) t3 = threading.Thread(target=p3.check, args=(i, bufferC, bufferD, semC, semD, plane_X, plane_Y, plane_Z, semA, semB, time_interval, iterations)) t1.start() t2.start() t3.start()
def run(self): """ @summary: The main function of this app, the driver for the whole game """ #setup our stat counters stat1 = {} stat2 = {} stats = [stat1, stat2] #load bot 1 ticks = time.time() p1 = P1() elapsed = time.time() - ticks stats[0]['Bot Loading Time'] = elapsed stats[0]['Number of Wins'] = 0 stats[0]['Game Fails'] = 0 stats[0]['Number of Draws'] = 0 stats[0]['Player'] = p1 stats[0]['Average Move Time'] = None stats[0]['Best Move Time'] = None stats[0]['Worst Move Time'] = None #load bot 2 ticks = time.time() p2 = P2() elapsed = time.time() - ticks stats[1]['Bot Loading Time'] = elapsed stats[1]['Number of Wins'] = 0 stats[1]['Game Fails'] = 0 stats[1]['Number of Draws'] = 0 stats[1]['Player'] = p2 stats[1]['Average Move Time'] = None stats[1]['Best Move Time'] = None stats[1]['Worst Move Time'] = None #main runs start here thisRound = 1 timeToRunInWarnings = 0 totalGameTime = time.time() for i in range(self.numberOfGames): #check that the whole process isn't taking too long if time.time() - totalGameTime > self.startWarnings: if timeToRunInWarnings == 0: timeToRunInWarnings = i if i % timeToRunInWarnings == 0: secs = int((self.numberOfGames - i) / float( (timeToRunInWarnings / float(self.startWarnings)))) hours, minutes, seconds = self.convertTime(secs) print "Taking a while.... %i games have been calculated so far" % ( i) if secs > self.maxGameTime: ch, cm, cs = self.convertTime(self.maxGameTime - (time.time() - totalGameTime)) print "At this rate it would take a further %ih:%im:%is to finish. We will be cut off in %ih:%im:%is\n" % ( hours, minutes, seconds, ch, cm, cs) else: print "At this rate it will take a further %ih:%im:%is to finish\n" % ( hours, minutes, seconds) if time.time() - totalGameTime > self.maxGameTime: print "Too long, game %i is the last to be calculated\n" % (i) break #setup the board and player markers p1Map = thisRound board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] #switch the round for the next game thisRound = self.switchPlayer(thisRound) #setup this games variables running = True winner = 0 failed = False #randomly place the first piece board[randint(0, 2)][randint(0, 2)] = p1Map #switch player p1Map = self.switchPlayer(p1Map) while (running): #if there are no more moves, crash out if self.boardFull(board): running = False else: #time the players move ticks = time.time() move = stats[p1Map - 1]['Player'].move(board) elapsed = time.time() - ticks #save the players timings if not stats[p1Map - 1]['Average Move Time']: stats[p1Map - 1]['Average Move Time'] = elapsed else: stats[p1Map - 1]['Average Move Time'] = ( stats[p1Map - 1]['Average Move Time'] + elapsed) / float(2) #Best move Time if not stats[p1Map - 1]['Best Move Time']: stats[p1Map - 1]['Best Move Time'] = elapsed elif stats[p1Map - 1]['Best Move Time'] > elapsed: stats[p1Map - 1]['Best Move Time'] = elapsed #Worst move Time if not stats[p1Map - 1]['Worst Move Time']: stats[p1Map - 1]['Worst Move Time'] = elapsed elif stats[p1Map - 1]['Worst Move Time'] < elapsed: stats[p1Map - 1]['Worst Move Time'] = elapsed #see if the player took too long if elapsed > self.gameFailThreshold: stats[p1Map - 1]['Game Fails'] += 1 stats[self.switchPlayer(p1Map) - 1]['Number of Wins'] += 1 running = False failed = True #check the move and if its valid, enter it into the board, otherwise chalk up a fail to the player if self.validateMove(move, board): board[move[1]][move[0]] = p1Map else: #game over player forfeits stats[p1Map - 1]['Game Fails'] += 1 running = False #check for winner winner = self.findWinner(board) if not winner == 0: #someone won! running = False #switch player for next move p1Map = self.switchPlayer(p1Map) #game over, add up stats if not winner == 0: stats[winner - 1]['Number of Wins'] += 1 elif failed: failed = False else: for stat in stats: stat['Number of Draws'] += 1 #print the game results self.printStatsToConsole(stats)
def run(self): menu = 0 running = True screen = self.screen hvbOpponent = None opponents = {} p1 = P1() p2 = P2() opponents[p1.name] = p1 opponents[p2.name] = p2 scores = [0, 0] # QUIT none # ACTIVEEVENT gain, state # KEYDOWN unicode, key, mod # KEYUP key, mod # MOUSEMOTION pos, rel, buttons # MOUSEBUTTONUP pos, button # MOUSEBUTTONDOWN pos, button # JOYAXISMOTION joy, axis, value # JOYBALLMOTION joy, ball, rel # JOYHATMOTION joy, hat, value # JOYBUTTONUP joy, button # JOYBUTTONDOWN joy, button # VIDEORESIZE size, w, h # VIDEOEXPOSE none # USEREVENT code while running: menuActive = True if menu == 0: #draw the main menu screen.fill((0, 0, 0)) rects = {} rects['heading'] = pygame.Rect(120, 120, 560, 140) rects['hvh'] = pygame.Rect(120, 280, 560, 120) rects['hvb'] = pygame.Rect(120, 420, 560, 120) rects['bvb'] = pygame.Rect(120, 560, 560, 120) rects['quit'] = pygame.Rect(500, 720, 280, 60) screen.fill((0, 0, 255), (100, 100, 600, 600)) screen.fill((127, 127, 127), rects['heading']) screen.fill((127, 127, 127), rects['hvh']) screen.fill((127, 127, 127), rects['hvb']) screen.fill((127, 127, 127), rects['bvb']) screen.fill((0, 0, 255), (rects['quit'][0] - 3, rects['quit'][1] - 3, rects['quit'][2] + 6, rects['quit'][3] + 6)) screen.fill((127, 127, 127), rects['quit']) self.write(rects['quit'], 'quit', (200, 200, 200), 75) self.write(rects['heading'], "Game Mode", (255, 255, 0), 100) self.write(rects['hvh'], "Human Vs Human", (255, 0, 0), 65) self.write(rects['hvb'], "Human Vs Bot", (255, 0, 0), 65) self.write(rects['bvb'], "Bot Vs Bot", (255, 0, 0), 65) pygame.display.flip() selected = False while menuActive: #assess mouse clicks n shit for event in pygame.event.get(): if event.type == pygame.QUIT: running = False menu = 0 menuActive = False #capture mouse clicks if event.type == pygame.MOUSEBUTTONDOWN: for key in rects.keys(): if rects[key].collidepoint(event.pos): selected = key #capture key strokes if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False menuActive = False menu = 0 #logic for menu from the button clicks if selected: if not selected == "heading": menuActive = False if selected == "hvh": menu = 1 if selected == "hvb": menu = 2 if selected == "bvb": menu = 4 if selected == "quit": menu = 0 running = False menuActive = False menuActive = True if menu == 1: scores = [0, 0] #draw the human vs human menu and play accordingly #draw the main screen board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] screen.fill((0, 0, 0)) rects = {} rects['1'] = pygame.Rect(103, 501, 196, 196) rects['2'] = pygame.Rect(302, 501, 196, 196) rects['3'] = pygame.Rect(501, 501, 196, 196) rects['4'] = pygame.Rect(103, 302, 196, 196) rects['5'] = pygame.Rect(302, 302, 196, 196) rects['6'] = pygame.Rect(501, 302, 196, 196) rects['7'] = pygame.Rect(103, 103, 196, 196) rects['8'] = pygame.Rect(302, 103, 196, 196) rects['9'] = pygame.Rect(501, 103, 196, 196) rects['quit'] = pygame.Rect(500, 720, 280, 60) screen.fill((0, 0, 255), (100, 100, 600, 600)) for key in rects.keys(): if key == "quit": screen.fill((0, 0, 255), (rects[key][0] - 3, rects[key][1] - 3, rects[key][2] + 6, rects[key][3] + 6)) screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 75) else: screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 100) #draw the player names self.drawPlayers(0) self.drawScores(scores) pygame.display.flip() player = 1 self.drawPlayers(player) winner = 0 selected = False while menuActive: #assess mouse clicks n shit for event in pygame.event.get(): #quit events if event.type == pygame.QUIT or ( event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): running = False menu = 0 menuActive = False #capture mouse clicks if event.type == pygame.MOUSEBUTTONDOWN: for key in rects.keys(): if rects[key].collidepoint(event.pos): selected = key #capture key strokes if event.type == pygame.KEYDOWN: validKeys = '123456789' if event.unicode in validKeys: selected = event.unicode #logic for menu from the button clicks if selected: if selected == "quit": menuActive = False menu = 0 else: pos = self.convertIndexToPos(int(selected)) #print pos,selected,rects[selected] if self.validateMove(pos, board): board[pos[1]][pos[0]] = player self.drawMove(selected, player, rects) pygame.display.update(rects[selected]) if self.findWinner(board): winner = player else: player = self.switchPlayer(player) if not self.boardFull(board): self.drawPlayers(player) selected = False if (not winner == 0) or self.boardFull(board): if not winner == 0: self.drawPlayers(winner + 2) scores[winner - 1] += 1 self.drawScores(scores) else: #draw self.drawPlayers(5) winner = 1 #reset game player = winner screen.fill((0, 0, 255), (100, 100, 600, 600)) for key in rects.keys(): if key == "quit": screen.fill( (0, 0, 255), (rects[key][0] - 3, rects[key][1] - 3, rects[key][2] + 6, rects[key][3] + 6)) screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 75) else: screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 100) pygame.display.flip() winner = 0 board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] self.drawPlayers(player) selected = False menuActive = True if menu == 2: #draw the choose bot for human to play against menu #define the rects rects = {} cursor = 420 for key in opponents.keys(): rects[key] = pygame.Rect(120, cursor, 560, 120) cursor += 140 #draw the elements screen.fill((0, 0, 0)) self.write((100, 100, 600, 150), "Choose Your", (255, 255, 255), 80) self.write((100, 250, 600, 150), "Opponent", (255, 255, 255), 80) screen.fill((0, 0, 255), (100, 400, 600, 300)) for key in rects.keys(): screen.fill((120, 120, 120), rects[key]) self.write(rects[key], key, (255, 255, 255), 45) pygame.display.flip() selected = False #process user input while menuActive: for event in pygame.event.get(): #quit events if event.type == pygame.QUIT or ( event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): running = False menu = 0 menuActive = False #capture mouse clicks if event.type == pygame.MOUSEBUTTONDOWN: for key in rects.keys(): if rects[key].collidepoint(event.pos): selected = key #logic for menu from the button clicks if selected: hvbOpponent = opponents[selected] menuActive = False menu = 3 menuActive = True if menu == 3: scores = [0, 0] #draw the bot vs human play #draw the main screen board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] screen.fill((0, 0, 0)) rects = {} rects['1'] = pygame.Rect(103, 501, 196, 196) rects['2'] = pygame.Rect(302, 501, 196, 196) rects['3'] = pygame.Rect(501, 501, 196, 196) rects['4'] = pygame.Rect(103, 302, 196, 196) rects['5'] = pygame.Rect(302, 302, 196, 196) rects['6'] = pygame.Rect(501, 302, 196, 196) rects['7'] = pygame.Rect(103, 103, 196, 196) rects['8'] = pygame.Rect(302, 103, 196, 196) rects['9'] = pygame.Rect(501, 103, 196, 196) rects['quit'] = pygame.Rect(500, 720, 280, 60) screen.fill((0, 0, 255), (100, 100, 600, 600)) for key in rects.keys(): if key == "quit": screen.fill((0, 0, 255), (rects[key][0] - 3, rects[key][1] - 3, rects[key][2] + 6, rects[key][3] + 6)) screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 75) else: screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 100) #draw the player names self.drawPlayers(0, hvbOpponent.name) self.drawScores(scores) pygame.display.flip() player = 1 self.drawPlayers(player, hvbOpponent.name) winner = 0 selected = False while menuActive: #assess mouse clicks n shit for event in pygame.event.get(): #quit events if event.type == pygame.QUIT or ( event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): running = False menu = 0 menuActive = False if player == 1: #capture mouse clicks if event.type == pygame.MOUSEBUTTONDOWN: for key in rects.keys(): if rects[key].collidepoint(event.pos): selected = key #capture key strokes if event.type == pygame.KEYDOWN: validKeys = '123456789' if event.unicode in validKeys: selected = event.unicode #logic for menu from the button clicks if player == 2: selected = str( self.pos2Selected(hvbOpponent.move(board))) if selected: if selected == "quit": menuActive = False menu = 0 else: pos = self.convertIndexToPos(int(selected)) #print pos,selected,rects[selected] if self.validateMove(pos, board): board[pos[1]][pos[0]] = player self.drawMove(selected, player, rects) pygame.display.update(rects[selected]) if self.findWinner(board): winner = player else: player = self.switchPlayer(player) if not self.boardFull(board): self.drawPlayers( player, hvbOpponent.name) selected = False if (not winner == 0) or self.boardFull(board): if not winner == 0: self.drawPlayers(winner + 2, hvbOpponent.name) scores[winner - 1] += 1 self.drawScores(scores) else: #draw self.drawPlayers(5, hvbOpponent.name) winner = 1 #reset game player = winner screen.fill((0, 0, 255), (100, 100, 600, 600)) for key in rects.keys(): if key == "quit": screen.fill( (0, 0, 255), (rects[key][0] - 3, rects[key][1] - 3, rects[key][2] + 6, rects[key][3] + 6)) screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 75) else: screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 100) pygame.display.flip() winner = 0 board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] self.drawPlayers(player, hvbOpponent.name) selected = False menuActive = True if menu == 4: scores = [0, 0] #draw the bot vs bot game #draw the main screen board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] screen.fill((0, 0, 0)) rects = {} rects['1'] = pygame.Rect(103, 501, 196, 196) rects['2'] = pygame.Rect(302, 501, 196, 196) rects['3'] = pygame.Rect(501, 501, 196, 196) rects['4'] = pygame.Rect(103, 302, 196, 196) rects['5'] = pygame.Rect(302, 302, 196, 196) rects['6'] = pygame.Rect(501, 302, 196, 196) rects['7'] = pygame.Rect(103, 103, 196, 196) rects['8'] = pygame.Rect(302, 103, 196, 196) rects['9'] = pygame.Rect(501, 103, 196, 196) rects['quit'] = pygame.Rect(500, 720, 280, 60) screen.fill((0, 0, 255), (100, 100, 600, 600)) for key in rects.keys(): if key == "quit": screen.fill((0, 0, 255), (rects[key][0] - 3, rects[key][1] - 3, rects[key][2] + 6, rects[key][3] + 6)) screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 75) else: screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 100) #draw the player names opponentNames = [] for key in opponents.keys(): opponentNames.append(key) #self.drawPlayers(0,hvbOpponent.name) self.drawBots(0, opponentNames) self.drawScores(scores) pygame.display.flip() player = 1 self.drawBots(player, opponentNames, 1) winner = 0 selected = False move = 0 while menuActive: #assess mouse clicks n shit for event in pygame.event.get(): #quit events if event.type == pygame.QUIT or ( event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): running = False menu = 0 menuActive = False #capture mouse clicks if event.type == pygame.MOUSEBUTTONDOWN: if rects['quit'].collidepoint(event.pos): selected = 'quit' #logic for menu from the button clicks if selected == "quit": menuActive = False menu = 0 if move == 0: selected = str(randint(1, 9)) else: selected = str( self.pos2Selected( opponents[opponentNames[player - 1]].move(board))) move += 1 pos = self.convertIndexToPos(int(selected)) if self.validateMove(pos, board): board[pos[1]][pos[0]] = player self.drawMove(selected, player, rects) pygame.display.update(rects[selected]) if self.findWinner(board): winner = player else: player = self.switchPlayer(player) if not self.boardFull(board): self.drawBots(player, opponentNames, 1) selected = False if (not winner == 0) or self.boardFull(board): if not winner == 0: self.drawBots(winner + 2, opponentNames, 500) scores[winner - 1] += 1 self.drawScores(scores) else: #draw self.drawBots(5, opponentNames, 500) winner = 1 #reset game player = winner screen.fill((0, 0, 255), (100, 100, 600, 600)) for key in rects.keys(): if key == "quit": screen.fill( (0, 0, 255), (rects[key][0] - 3, rects[key][1] - 3, rects[key][2] + 6, rects[key][3] + 6)) screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 75) else: screen.fill((127, 127, 127), rects[key]) self.write(rects[key], key, (200, 200, 200), 100) pygame.display.flip() winner = 0 board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] move = 0 self.drawBots(player, opponentNames, 1) selected = False
class main: rows = 8 columns = 7 bufferA = [[0 for x in range(columns)] for y in range(rows)] #varables at bottom to randomly generate coordinates for bufferA, nonzero chance of hitting an already taken coordinate set bufferAXVarX = random.randint(0, rows - 1) bufferAXVarY = random.randint(0, columns - 1) bufferAYVarX = random.randint(0, rows - 1) bufferAYVarY = random.randint(0, columns - 1) bufferAZVarX = random.randint(0, rows - 1) bufferAZVarY = random.randint(0, columns - 1) if ((bufferAXVarX == bufferAYVarX or bufferAXVarX == bufferAZVarX or bufferAYVarX == bufferAZVarX) and (bufferAXVarY == bufferAYVarY or bufferAXVarY == bufferAZVarY or bufferAYVarX == bufferAZVarX)): #generate again if equal bufferAXVarX = random.randint(0, rows - 1) bufferAXVarY = random.randint(0, columns - 1) bufferAYVarX = random.randint(0, rows - 1) bufferAYVarY = random.randint(0, columns - 1) bufferAZVarX = random.randint(0, rows - 1) bufferAZVarY = random.randint(0, columns - 1) bufferA[bufferAXVarX][bufferAXVarY] = 'X' bufferA[bufferAYVarX][bufferAYVarY] = 'Y' bufferA[bufferAZVarX][bufferAZVarY] = 'Z' bufferB = [[0 for x in range(columns)] for y in range(rows)] bufferC = [[0 for x in range(3)] for y in range(3)] bufferD = [[0 for x in range(3)] for y in range(3)] bufferC[0][0] = 'X' bufferC[0][1] = 'Y' bufferC[0][2] = 'Z' bufferD[0][0] = 'X' bufferD[0][1] = 'Y' bufferD[0][2] = 'Z' interval = input( "How long of a delay between train movements in seconds? ") itterations = input("How many times would you like the trains to move? ") semA = threading.Semaphore() semB = threading.Semaphore() semC = threading.Semaphore() semD = threading.Semaphore() plane_X = planeX.planeX(0, 0) plane_Y = planeY.planeY(0, 2) plane_Z = planeZ.planeZ(3, 6) p1 = P1.P1(0, plane_X, plane_Y, plane_Z, bufferA, bufferB, semA, semB) p2 = P2.P2(0, bufferC, bufferD, semA, semB, semC, semD) p3 = P3.P3(bufferC, bufferD, plane_X, plane_Y, plane_Z, bufferAZVarX, bufferAYVarY) #thread class declarations i = 0 t1 = threading.Thread(target=p1.proc1, args=(i, plane_X, plane_Y, plane_Z, bufferA, bufferB, semA, semB, semC, semD, interval, itterations)) t2 = threading.Thread(target=p2.proc, args=(i, bufferA, bufferB, bufferC, bufferD, semA, semB, semC, semD, interval, itterations)) t3 = threading.Thread(target=p3.check, args=(i, bufferC, bufferD, semC, semD, plane_X, plane_Y, plane_Z, semA, semB, interval, itterations)) t1.start() t2.start() t3.start()