日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python+pygame 最强大脑联动归位游戏

發布時間:2023/12/14 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python+pygame 最强大脑联动归位游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 聯動歸位游戲
  • 下載包
  • 項目結構
  • 準備
  • 編寫代碼
    • 導入包
    • 定義圖像類
    • 繪制滑塊和文字
    • 定義一個二維列表的查找函數
    • 定義字體
    • 生成目標
    • 移動函數
      • 分析
      • 獲得滑塊行列
      • 四個方向的移動方法
      • 調用移動方法
      • 完整的代碼
    • 初始化游戲并定義常量
    • 循環判斷
    • 游戲結束后顯示信息
  • 完整代碼
  • 資源及源代碼下載鏈接

聯動歸位游戲

上視頻。

【最強大腦】第二輪挑戰“聯動歸位”

下載包

pip install pygame

項目結構

  • simsun.ttc是字體
  • applicant下的東西是滑塊
  • background.jpeg是背景
  • help.jpg是目標圖片
  • icon.png是圖標

準備

資源及源代碼下載鏈接
提取碼: 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, columnraise 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] = colorreturn ans

移動函數

分析

  • 獲得滑塊的行列
  • 通過angel的方向參數,定義四個方向的不同移動

獲得滑塊行列

def move(angel):global movement, colorsredx, 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] = streetx -= 1if (colors[x][y] != street and (colors[x][y] not in imgtars)) or x < 0:x += 1colors[x][y] = colmover(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] = streetx += 1if x >= gwidth:x -= 1if colors[x][y] != street and (colors[x][y] not in imgtars):x -= 1colors[x][y] = colmover(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] = streety -= 1if (colors[x][y] != street and (colors[x][y] not in imgtars)) or y < 0:y += 1colors[x][y] = colmover(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] = streety += 1if y >= gwidth:y -= 1if colors[x][y] != street and (colors[x][y] not in imgtars):y -= 1colors[x][y] = colmover(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, colorsredx, 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 += 1def left():def mover(x, y, col):colors[x][y] = streetx -= 1if (colors[x][y] != street and (colors[x][y] not in imgtars)) or x < 0:x += 1colors[x][y] = colmover(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] = streetx += 1if x >= gwidth:x -= 1if colors[x][y] != street and (colors[x][y] not in imgtars):x -= 1colors[x][y] = colmover(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] = streety -= 1if (colors[x][y] != street and (colors[x][y] not in imgtars)) or y < 0:y += 1colors[x][y] = colmover(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] = streety += 1if y >= gwidth:y -= 1if colors[x][y] != street and (colors[x][y] not in imgtars):y -= 1colors[x][y] = colmover(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 * 40helping = 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 = 0colors = [[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 = 12start = time.time() end = time.time() timer = 0movement = 0screen = 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 = Truerunning = Falsefor event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_ESCAPE:running = Falseelif 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().centerxcentery = screen.get_rect().centeryscreen.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 = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_ESCAPE:running = Falsepygame.display.update()pygame.quit() sys.exit()

完整代碼

import pygame import random import os import sys import time import pprintclass 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.namedef 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, columnraise ValueErrordef 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] = colorreturn ansdef move(angel):global movement, colorsredx, 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 += 1def left():def mover(x, y, col):colors[x][y] = streetx -= 1if (colors[x][y] != street and (colors[x][y] not in imgtars)) or x < 0:x += 1colors[x][y] = colmover(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] = streetx += 1if x >= gwidth:x -= 1if colors[x][y] != street and (colors[x][y] not in imgtars):x -= 1colors[x][y] = colmover(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] = streety -= 1if (colors[x][y] != street and (colors[x][y] not in imgtars)) or y < 0:y += 1colors[x][y] = colmover(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] = streety += 1if y >= gwidth:y -= 1if colors[x][y] != street and (colors[x][y] not in imgtars):y -= 1colors[x][y] = colmover(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 * 40helping = 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 = 0colors = [[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 = 12start = time.time() end = time.time() timer = 0movement = 0screen = pygame.display.set_mode((width, height))pygame.display.set_caption('聯動歸位') pygame.display.set_icon(icon.image)running = True win = False # win = Truewhile running:clock.tick(fps)end = time.time()timer = int(end - start)render(colors)if colors == winmap:win = Truerunning = Falsefor event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_ESCAPE:running = Falseelif 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().centerxcentery = screen.get_rect().centeryscreen.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 = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_ESCAPE:running = Falsepygame.display.update()pygame.quit() sys.exit()

資源及源代碼下載鏈接

資源及源代碼下載鏈接
提取碼: 7jhp

總結

以上是生活随笔為你收集整理的python+pygame 最强大脑联动归位游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。