def startscreen(highscore_list): global screen started = False block_list = pygame.sprite.Group() all_sprites_list = pygame.sprite.Group() all_sprites_list.add(player) startBlock = Block(GREEN, 60, 60) all_sprites_list.add(startBlock) startBlock.rect.x = 630 startBlock.rect.y = 320 block_list.add(startBlock) all_sprites_list.draw(screen) clock = pygame.time.Clock() while not started: for puck in puck_movement(): player.update(puck[0], puck[1]) all_sprites_list.draw(screen) if len(highscore_list) == 0: Score = myfont.render("Score to beat:0", 1, (0, 50, 0)) else: Score = myfont.render( "Score to beat set by " + highscore_list[0].keys()[0] + ": " + str(highscore_list[0].values()[0]), 1, (0, 50, 0)) screen.blit(Score, (10, 10)) # See if the player block has collided with anything. #clock.tick(20) pygame.display.flip() blocks_hit_list = pygame.sprite.spritecollide( player, block_list, False, pygame.sprite.collide_rect) #if blocks_hit_list is not None: for block in blocks_hit_list: print("HIT!!!!!") started = True return
def main(): cap = cv2.VideoCapture(1) #cap = cv2.VideoCapture("/home/lars/dev/Videos/Webcam/2017-12-20-223500.webm") #window = pyglet.window.Window() #cursor= window.get_system_mouse_cursor(window.CURSOR_CROSSHAIR) #window.set_mouse_cursor(cursor) # Game size: #700*1258 >840*1507 #outputsize #40*1507 # Initialize Pygame pygame.init() # Set the height and width of the screen screen_width = 1513 screen_height = 900 screen = pygame.Surface((1510, 842)) gameoutput = pygame.Surface((1510, 58)) screen.fill(WHITE) gameoutput.fill(RED) global myfont myfont = pygame.font.SysFont("monospace", 30, True) clock = pygame.time.Clock() player = Player(BLACK, 60, 60) topborder = Border(BLACK, 20, 142, 745, 0) bluehole = Border(BLUE, 20, 142, 745, 142) midborder = Border(BLACK, 20, 274, 745, 284) redhole = Border(RED, 20, 142, 745, 557) lowborder = Border(BLACK, 20, 142, 745, 699) targettl = Border(GREEN, 120, 120, 312, 220) targetbl = Border(GREEN, 120, 120, 312, 500) targettr = Border(GREEN, 120, 120, 1077, 220) targetbr = Border(GREEN, 120, 120, 1077, 500) targets = [targettl, targetbl, targettr, targetbr] sprite_list = pygame.sprite.Group() target_list = pygame.sprite.Group() sprite_list.add(player) target = copy.copy(targets[randint(0, 3)]) sprite_list.add(redhole) sprite_list.add(bluehole) sprite_list.add(topborder) sprite_list.add(midborder) sprite_list.add(lowborder) sprite_list.add(target) target_list.add(target) # -------- Main Program Loop ----------- started = False done = False score = 0 dest = np.array([[0, 0], [1509, 0], [1509, 841], [0, 841]], np.float32) undistinfo = pickle.load(open("undistinfo.p", "rb"), fix_imports=True, encoding='latin1') mtx = undistinfo['mtx'] dist = undistinfo['dist'] ret, frame = cap.read() h, w = frame.shape[:2] newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (w, h), 1, (w, h)) print("foer kallibrer") warp, mask, maskcorners, _ = kallibrer(cap, dest, newcameramtx, mtx, dist) fullscreen = pygame.display.set_mode([screen_width, screen_height], pygame.FULLSCREEN) hitcount = 0 hole = "" print("am alive") myfont = pygame.font.SysFont("monospace", 30, True) time1 = time.clock() puck_size = 60 x = 0 dircount = 0 pucksizelist = [] start_ticks = pygame.time.get_ticks() for puck in puck_movement(lambda: circleposition( cap, warp, newcameramtx, mtx, dist, mask, maskcorners)): loop_ticks = pygame.time.get_ticks() #starter tick current_x = puck[0][2][0] current_y = puck[0][2][1] prev_x = puck[0][1][0] prev_y = puck[0][1][1] length = math.sqrt( pow(abs(current_x - prev_x), 2) + pow(abs(current_y - prev_y), 2)) missing_pucks = [] if length > puck_size * 2: parts = int(length / puck_size) part_x = (current_x - prev_x) / parts part_y = (current_y - prev_y) / parts for x in range(1, parts): missing_pucks.append( [prev_x + part_x * x, prev_y + part_y * x]) #seconds=(pygame.time.get_ticks()-start_ticks)/1000 time2 = time.clock() print('clocktime %s' % str(loop_ticks - start_ticks)) #time1=time2, #pucksizelist.append([puck[0][2][2],puck[0][2][3]]) x += 1 # Calls update() method on every sprite in the list sprite_list.update(puck[0][2][0], puck[0][2][1]) if puck[1]: dircount = dircount + 1 if (puck[0][2][0] > 660 and puck[0][1][0] < 640) or (puck[0][2][0] < 640 and puck[0][1][0] > 660): if puck[0][2][1] > 350: hole = "Red" else: hole = "Blue" gameoutput.fill(RED) screen.fill(WHITE) sprite_list.draw(screen) player_list = pygame.sprite.Group() player_list.add(player) for p in missing_pucks: player_list.add(Player(RED, 60, 60).update(p[0], p[1])) player_list.draw(screen) # ~ if len(missing_pucks) > 0: # ~ press=True # ~ while press: # ~ for event in pygame.event.get(): # ~ if event.type == pygame.KEYDOWN: # ~ press = False #if event.key == pygame.K_q: # pygame.quit() target_hit_list = pygame.sprite.groupcollide( player_list, target_list, False, True, pygame.sprite.collide_rect) #target_hit_list = pygame.sprite.spritecollide(player, target_list, True,pygame.sprite.collide_rect) #if blocks_hit_list is not None: for extrapuck in target_hit_list: if len(target_hit_list[extrapuck]) > 0: target = target_hit_list[extrapuck][0] print("HIT!!!!!") #raise Exception('Hit') hitcount += 1 #randint(0,3) ctargets = [ x for x in copy.copy(targets) if not x.rect.x == target.rect.x or not x.rect.y == target.rect.y ] target = ctargets[randint(0, 2)] sprite_list.add(target) target_list.add(target) break # Draw all the spites #screen.blit(player.image,player.rect) # Limit to 20 frames per second clock.tick(30) # Go ahead and update the screen with what we've drawn. #timelimit = 100 #timecount = timelimit - round(time2 - time1) #Timecount = myfont.render("time "+ str(timecount), 1, (0,50,0)) countdown = int(2 - (loop_ticks - start_ticks) / 1000) gametime = myfont.render('clocktime %s' % str(countdown), 1, (0, 50, 0)) Score = myfont.render("Count " + str(hitcount), 1, (0, 50, 0)) Hole = myfont.render("Hole " + str(hole), 1, (0, 50, 0)) #screen.blit(Timecount,(10,10)) gameoutput.blit(Score, (10, 30)) gameoutput.blit(Hole, (200, 30)) gameoutput.blit(gametime, (400, 30)) fullscreen.blit(gameoutput, (0, 0)) fullscreen.blit(screen, (0, 55)) if countdown < 0: return hitcount, fullscreen pygame.display.flip() #if timelimit <= 0: # return hitcount if cv2.waitKey(1) & 0xFF == ord('q'): break
def main(): cap = cv2.VideoCapture(0) #cap = cv2.VideoCapture("/home/lars/dev/Videos/Webcam/2017-12-20-223500.webm") #window = pyglet.window.Window() #cursor= window.get_system_mouse_cursor(window.CURSOR_CROSSHAIR) #window.set_mouse_cursor(cursor) # Initialize Pygame pygame.init() # Set the height and width of the screen screen_width = 1300 screen_height = 700 screen = pygame.display.set_mode([screen_width, screen_height]) screen.fill(WHITE) # Used to manage how fast the screen updates clock = pygame.time.Clock() score = 0 started = False myfont = pygame.font.SysFont("monospace", 30, True) player = Player(BLACK, 60, 60) topborder = Border(BLACK, 20, 117, 640, 0) midborder = Border(BLACK, 20, 230, 640, 235) lowborder = Border(BLACK, 20, 117, 640, 583) bluehole = Border(BLUE, 20, 117, 640, 117) redhole = Border(RED, 20, 117, 640, 466) targettl = Border(GREEN, 120, 120, 265, 115) targetbl = Border(GREEN, 120, 120, 265, 415) targettr = Border(GREEN, 120, 120, 915, 115) targetbr = Border(GREEN, 120, 120, 915, 415) targets = [targettl, targetbl, targettr, targetbr] sprite_list = pygame.sprite.Group() target_list = pygame.sprite.Group() sprite_list.add(player) target = copy.copy(targets[randint(0, 3)]) sprite_list.add(redhole) sprite_list.add(bluehole) sprite_list.add(topborder) sprite_list.add(midborder) sprite_list.add(lowborder) sprite_list.add(target) target_list.add(target) # -------- Main Program Loop ----------- start_ticks = pygame.time.get_ticks() started = False done = False score = 0 dest = np.array([[0, 0], [1299, 0], [1299, 699], [0, 699]], np.float32) undistinfo = pickle.load(open("undistinfo.p", "rb"), fix_imports=True, encoding='latin1') mtx = undistinfo['mtx'] dist = undistinfo['dist'] ret, frame = cap.read() h, w = frame.shape[:2] newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (w, h), 1, (w, h)) print("foer kallibrer") warp, mask, maskcorners, _ = kallibrer(cap, dest, newcameramtx, mtx, dist) hitcount = 0 hole = "" print("am alive") myfont = pygame.font.SysFont("monospace", 30, True) time1 = time.clock() x = 0 for puck in puck_movement(lambda: circleposition( cap, warp, newcameramtx, mtx, dist, mask, maskcorners)): time2 = time.clock() #print('clocktime %0.6f' % (time2-time1)) #time1=time2 x += 1 # Calls update() method on every sprite in the list sprite_list.update(puck[0][2][0], puck[0][2][1]) #if puck[1]: # dircount = dircount + 1 if (puck[0][2][0] > 660 and puck[0][1][0] < 640) or (puck[0][2][0] < 640 and puck[0][1][0] > 660): if puck[0][2][1] > 350: hole = "Red" else: hole = "Blue" dircount = 0 screen.fill(WHITE) sprite_list.draw(screen) target_hit_list = pygame.sprite.spritecollide( player, target_list, True, pygame.sprite.collide_rect) #if blocks_hit_list is not None: for target in target_hit_list: print("HIT!!!!!") hitcount += 1 #randint(0,3) ctargets = [ x for x in copy.copy(targets) if not x.rect.x == target.rect.x or not x.rect.y == target.rect.y ] target = ctargets[randint(0, 2)] sprite_list.add(target) target_list.add(target) # Draw all the spites #screen.blit(player.image,player.rect) # Limit to 20 frames per second clock.tick(30) # Go ahead and update the screen with what we've drawn. #timelimit = 100 #timecount = timelimit - round(time2 - time1) #Timecount = myfont.render("time "+ str(timecount), 1, (0,50,0)) Score = myfont.render("Count " + str(hitcount), 1, (0, 50, 0)) Hole = myfont.render("Hole " + str(hole), 1, (0, 50, 0)) #screen.blit(Timecount,(10,10)) screen.blit(Score, (10, 30)) screen.blit(Hole, (10, 50)) pygame.display.flip() #if timelimit <= 0: # return hitcount if cv2.waitKey(1) & 0xFF == ord('q'): break