赞
踩
上视频。
【最强大脑】第二轮挑战“联动归位”
pip install pygame

资源及源代码下载链接
提取码: 7jhp
在"联动归位"文件夹下创建main-game.py
import pygame
import random
import os
import sys
import time
import pprint
class Image(object):
def __init__(self, path):
self.image = pygame.image.load(path)
self.name = (os.path.basename(path)).split('.')[0]
def __str__(self):
return self.name
def render(colors):
screen.blit(background.image, (0, 0))
for row, i in enumerate(colors):
for column, j in enumerate(i):
screen.blit(j.image, (row * 40, column * 40))
screen.blit(getfont(text='成果实例图:'), (gwidth * 40, screen.get_rect().centery - gwidth // 2 * 40))
screen.blit(helping.image, (gwidth * 40 + 6 * 28, screen.get_rect().centery - gwidth // 2 * 40))
screen.blit(getfont(text=f'计时:{timer}秒'), (gwidth * 40, screen.get_rect().centery))
screen.blit(getfont(text=f'移动步数:{movement}次'), (gwidth * 40, screen.get_rect().centery + 50))
def getindex(target, lists):
for row, i in enumerate(lists):
for column, j in enumerate(i):
if j == target:
return row, column
raise IndexError
def getfont(text, color=(255, 70, 130)):
return gamefont.render(text, True, color)
def targets(images):
ans = images[:]
for counter, color in enumerate(imgcolors):
ans[-1][counter] = color
return ans
def move(angel):
global movement, colors
redx, redy = getindex(red, colors)
bluex, bluey = getindex(blue, colors)
brownx, browny = getindex(brown, colors)
greenx, greeny = getindex(green, colors)
orangex, orangey = getindex(orange, colors)
pinkx, pinky = getindex(pink, colors)
purplex, purpley = getindex(purple, colors)
yellowx, yellowy = getindex(yellow, colors)
movement += 1
def left(): def mover(x, y, col): colors[x][y] = street x -= 1 if (colors[x][y] != street and (colors[x][y] not in imgtars)) or x < 0: x += 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def right(): # 差不多 def mover(x, y, col): colors[x][y] = street x += 1 if x >= gwidth: x -= 1 if colors[x][y] != street and (colors[x][y] not in imgtars): x -= 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def up(): # 差不多 def mover(x, y, col): colors[x][y] = street y -= 1 if (colors[x][y] != street and (colors[x][y] not in imgtars)) or y < 0: y += 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def down(): # 差不多 def mover(x, y, col): colors[x][y] = street y += 1 if y >= gwidth: y -= 1 if colors[x][y] != street and (colors[x][y] not in imgtars): y -= 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow)
functions = {
'left': left,
'right': right,
'up': up,
'down': down,
}[angel]
functions()
def move(angel): global movement, colors redx, redy = getindex(red, colors) bluex, bluey = getindex(blue, colors) brownx, browny = getindex(brown, colors) greenx, greeny = getindex(green, colors) orangex, orangey = getindex(orange, colors) pinkx, pinky = getindex(pink, colors) purplex, purpley = getindex(purple, colors) yellowx, yellowy = getindex(yellow, colors) movement += 1 def left(): def mover(x, y, col): colors[x][y] = street x -= 1 if (colors[x][y] != street and (colors[x][y] not in imgtars)) or x < 0: x += 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def right(): def mover(x, y, col): colors[x][y] = street x += 1 if x >= gwidth: x -= 1 if colors[x][y] != street and (colors[x][y] not in imgtars): x -= 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def up(): def mover(x, y, col): colors[x][y] = street y -= 1 if (colors[x][y] != street and (colors[x][y] not in imgtars)) or y < 0: y += 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def down(): def mover(x, y, col): colors[x][y] = street y += 1 if y >= gwidth: y -= 1 if colors[x][y] != street and (colors[x][y] not in imgtars): y -= 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) functions = { 'left': left, 'right': right, 'up': up, 'down': down, }[angel] functions()
pygame.init() gwidth = 19 width = gwidth * 40 + 240 height = gwidth * 40 helping = Image('images/help/help.jpg') gamefont = pygame.font.Font('fonts/simsun.ttc', 29) icon = Image('images/icon/icon.png') background = Image('images/back/background.jpeg') blue = Image('images/applicant/blue.bmp') brown = Image('images/applicant/brown.bmp') green = Image('images/applicant/green.bmp') orange = Image('images/applicant/orange.bmp') pink = Image('images/applicant/pink.bmp') purple = Image('images/applicant/purple.bmp') red = Image('images/applicant/red.bmp') stack = Image('images/applicant/stack.bmp') street = Image('images/applicant/street.bmp') yellow = Image('images/applicant/yellow.bmp') bluetar = Image('images/applicant/target/blue-target.bmp') browntar = Image('images/applicant/target/brown-target.bmp') greentar = Image('images/applicant/target/green-target.bmp') orangetar = Image('images/applicant/target/orange-target.bmp') pinktar = Image('images/applicant/target/pink-target.bmp') purpletar = Image('images/applicant/target/purple-target.bmp') redtar = Image('images/applicant/target/red-target.bmp') yellowtar = Image('images/applicant/target/yellow-target.bmp') imgcolors = [blue, brown, green, orange, purple, red, yellow, pink] imgtars = [bluetar, browntar, greentar, orangetar, pinktar, purpletar, redtar, yellowtar] movement = 0 colors = [[stack if random.random() < 0.28 else street for i in range(gwidth)] for j in range(gwidth)] colors = targets(colors) winmap = [list(i) for i in colors] # print(images, winmap) for count in range(gwidth * gwidth): move(random.choice(('left', 'right', 'up', 'down'))) clock = pygame.time.Clock() fps = 12 start = time.time() end = time.time() timer = 0 movement = 0 screen = pygame.display.set_mode((width, height)) pygame.display.set_caption('联动归位') pygame.display.set_icon(icon.image) running = True win = False # win = True
while running: clock.tick(fps) end = time.time() timer = int(end - start) render(colors) if colors == winmap: win = True running = False for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: running = False elif event.key == pygame.K_LEFT: move('left') elif event.key == pygame.K_RIGHT: move('right') elif event.key == pygame.K_UP: move('up') elif event.key == pygame.K_DOWN: move('down') pygame.display.flip()
running = win while running: screen.blit(background.image, background.image.get_rect()) centerx = screen.get_rect().centerx centery = screen.get_rect().centery screen.blit(getfont('作答完成'), (centerx, centery - 158)) screen.blit(getfont(f'用时:{timer}'), (centerx, centery - 102)) screen.blit(getfont(f'移动:{movement}'), (centerx, centery - 60)) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: running = False pygame.display.update() pygame.quit() sys.exit()
import pygame import random import os import sys import time import pprint class Image(object): def __init__(self, path): self.image = pygame.image.load(path) self.name = (os.path.basename(path)).split('.')[0] def __str__(self): return self.name def render(colors): screen.blit(background.image, (0, 0)) for row, i in enumerate(colors): for column, j in enumerate(i): screen.blit(j.image, (row * 40, column * 40)) screen.blit(getfont(text='成果实例图:'), (gwidth * 40, screen.get_rect().centery - gwidth // 2 * 40)) screen.blit(helping.image, (gwidth * 40 + 6 * 28, screen.get_rect().centery - gwidth // 2 * 40)) screen.blit(getfont(text=f'计时:{timer}秒'), (gwidth * 40, screen.get_rect().centery)) screen.blit(getfont(text=f'移动步数:{movement}次'), (gwidth * 40, screen.get_rect().centery + 50)) def getindex(target, lists): for row, i in enumerate(lists): for column, j in enumerate(i): if j == target: return row, column raise ValueError def getfont(text, color=(255, 70, 130)): return gamefont.render(text, True, color) def targets(images): ans = images[:] for counter, color in enumerate(imgcolors): ans[-1][counter] = color return ans def move(angel): global movement, colors redx, redy = getindex(red, colors) bluex, bluey = getindex(blue, colors) brownx, browny = getindex(brown, colors) greenx, greeny = getindex(green, colors) orangex, orangey = getindex(orange, colors) pinkx, pinky = getindex(pink, colors) purplex, purpley = getindex(purple, colors) yellowx, yellowy = getindex(yellow, colors) movement += 1 def left(): def mover(x, y, col): colors[x][y] = street x -= 1 if (colors[x][y] != street and (colors[x][y] not in imgtars)) or x < 0: x += 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def right(): def mover(x, y, col): colors[x][y] = street x += 1 if x >= gwidth: x -= 1 if colors[x][y] != street and (colors[x][y] not in imgtars): x -= 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def up(): def mover(x, y, col): colors[x][y] = street y -= 1 if (colors[x][y] != street and (colors[x][y] not in imgtars)) or y < 0: y += 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) def down(): def mover(x, y, col): colors[x][y] = street y += 1 if y >= gwidth: y -= 1 if colors[x][y] != street and (colors[x][y] not in imgtars): y -= 1 colors[x][y] = col mover(bluex, bluey, blue) mover(brownx, browny, brown) mover(greenx, greeny, green) mover(orangex, orangey, orange) mover(pinkx, pinky, pink) mover(purplex, purpley, purple) mover(redx, redy, red) mover(yellowx, yellowy, yellow) functions = { 'left': left, 'right': right, 'up': up, 'down': down, }[angel] functions() pygame.init() gwidth = 19 width = gwidth * 40 + 240 height = gwidth * 40 helping = Image('images/help/help.jpg') gamefont = pygame.font.Font('fonts/simsun.ttc', 29) icon = Image('images/icon/icon.png') background = Image('images/back/background.jpeg') blue = Image('images/applicant/blue.bmp') brown = Image('images/applicant/brown.bmp') green = Image('images/applicant/green.bmp') orange = Image('images/applicant/orange.bmp') pink = Image('images/applicant/pink.bmp') purple = Image('images/applicant/purple.bmp') red = Image('images/applicant/red.bmp') stack = Image('images/applicant/stack.bmp') street = Image('images/applicant/street.bmp') yellow = Image('images/applicant/yellow.bmp') bluetar = Image('images/applicant/target/blue-target.bmp') browntar = Image('images/applicant/target/brown-target.bmp') greentar = Image('images/applicant/target/green-target.bmp') orangetar = Image('images/applicant/target/orange-target.bmp') pinktar = Image('images/applicant/target/pink-target.bmp') purpletar = Image('images/applicant/target/purple-target.bmp') redtar = Image('images/applicant/target/red-target.bmp') yellowtar = Image('images/applicant/target/yellow-target.bmp') imgcolors = [blue, brown, green, orange, purple, red, yellow, pink] imgtars = [bluetar, browntar, greentar, orangetar, pinktar, purpletar, redtar, yellowtar] movement = 0 colors = [[stack if random.random() < 0.28 else street for i in range(gwidth)] for j in range(gwidth)] colors = targets(colors) winmap = [list(i) for i in colors] # print(images, winmap) for count in range(gwidth * gwidth): move(random.choice(('left', 'right', 'up', 'down'))) clock = pygame.time.Clock() fps = 12 start = time.time() end = time.time() timer = 0 movement = 0 screen = pygame.display.set_mode((width, height)) pygame.display.set_caption('联动归位') pygame.display.set_icon(icon.image) running = True win = False # win = True while running: clock.tick(fps) end = time.time() timer = int(end - start) render(colors) if colors == winmap: win = True running = False for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: running = False elif event.key == pygame.K_LEFT: move('left') elif event.key == pygame.K_RIGHT: move('right') elif event.key == pygame.K_UP: move('up') elif event.key == pygame.K_DOWN: move('down') pygame.display.flip() running = win while running: screen.blit(background.image, background.image.get_rect()) centerx = screen.get_rect().centerx centery = screen.get_rect().centery screen.blit(getfont('作答完成'), (centerx, centery - 158)) screen.blit(getfont(f'用时:{timer}'), (centerx, centery - 102)) screen.blit(getfont(f'移动:{movement}'), (centerx, centery - 60)) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: running = False pygame.display.update() pygame.quit() sys.exit()
资源及源代码下载链接
提取码: 7jhp
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。