python版小游戏?安排

python版小游戏?安排

首页休闲益智马不停题更新时间:2024-04-16

发现大家最近都迷上了搞小游戏,于是我马不停蹄的给大家安排!!!

说起游戏万年经典就是迷宫,也是小朋友的最爱,为此小编特地查了一下,玩儿迷宫不仅能锻炼孩子的逻辑思维能力,还能引导孩子方位的感知,就冲这,程序员爸爸们还不快来给孩子搞一个提升他们的兴趣

游戏规则:顾名思义,玩家出现在迷宫的外面,进入之后要在很多不同的路中间找到一条可以抵达终点的路,可以发反复的尝试,能走到终点就是胜利,当人你如果在迷宫中迷路了,就走不出来会失败。迷宫游戏则倾向于吸引那些更有兴趣解决谜题和迎接挑战的人群。

*前言

1)需要做哪些准备呢?

本文的游戏迷宫是2个单独的迷宫组合而成的,一个简单的迷宫,一个难的迷宫。

环境安装的话:Python3、Pycharm、Pygame模块。

模块安装:pip install pygame

*干货

2)代码(仅部分)

简易版主程序:

import pygame import sys import random import time from pygame.locals import * from random import randint, choice import mapp import color # 设置屏幕宽度和高度为全局变量 global screen_width screen_width = 800 global screen_height screen_height = 800 room_size = 15 # 每个房间的大小 steps = 0 # 输出文本信息 def print_text(font, x, y, text, color, shadow=True): if shadow: imgText = font.render(text, True, (0, 0, 0)) screen.blit(imgText, (x-2,y-2)) imgText = font.render(text, True, color) screen.blit(imgText, (x,y)) # 存储迷宫 r_list = mapp.map_list # 游戏开始 if __name__ == '__main__': # 初始化 Pygame pygame.init() screen = pygame.display.set_mode([screen_width, screen_height]) pygame.display.set_caption('Maze_AI——by Wonz') global font1, font2, font3 clock = pygame.time.Clock() fps = 20 screen.fill(color.White) # 加载角色照片 user = pygame.image.load("user.png").convert_alpha() width, height = user.get_size() user = pygame.transform.smoothscale(user, (8, 8)) # draw the user width, height = user.get_size() x = 25 42 * room_size y = 25 9 * room_size roomx = 42 roomy = 9 screen.blit(user, (x, y)) # 画迷宫 for i in range(43): for j in range(42): if (r_list[j][i] == 3): pygame.draw.circle(screen, color.Red, [30 i * room_size, 30 j * room_size], 5, 0) pygame.display.flip() r_list[j][i] = 0 elif (r_list[j][i] == 1): # 画10*10的矩形,线宽为1,这里不能是0,因为10*10无空白区域 pygame.draw.rect(screen, color.Black, [25 i * room_size, 25 j * room_size, 10, 10], 0) pygame.display.flip() elif (r_list[j][i] == 0): pygame.draw.rect(screen, color.White, [25 i * room_size, 25 j * room_size, 10, 10], 1) pygame.display.flip() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 走到终点 elif(roomx == 0 and roomy == 9): font3 = pygame.font.Font(None, 32) print_text(font3, 350, 350, "Win", color.Red) break elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: # 右边无墙 if(0 <= roomx < 42 and 0 <= roomy <= 41 and r_list[roomy][roomx 1] == 0): x = room_size roomx = 1 # 计房间数 steps = 1 # 计步 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) # x:25 y:0 width:200 height:25 screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(steps), color.Black) pygame.display.flip() screen.fill(color.White, (x-room_size, y, 10, 10)) screen.blit(user, (x, y)) # 右边有墙 elif (0 <= roomx < 42 and 0 <= roomy <= 41 and r_list[roomy][roomx 1] == 1): steps = 1 font1 = pygame.font.Font(None, 32) font2 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(steps), color.Black) print_text(font2, 350, 0, "This is a wall!", color.Black) pygame.display.flip() screen.blit(user, (x, y)) elif event.key == pygame.K_LEFT: # 左边无墙 if (0 < roomx <= 42 and 0 <= roomy <= 41 and r_list[roomy][roomx-1] == 0): x -= room_size roomx -= 1 steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(steps), color.Black) pygame.display.flip() screen.fill(color.White, (x room_size, y, 10, 10)) screen.blit(user, (x, y)) # 左边有墙 elif (0 < roomx <= 42 and 0 <= roomy <= 41 and r_list[roomy][roomx-1] == 1): steps = 1 font1 = pygame.font.Font(None, 32) font2 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(steps), color.Black) print_text(font2, 350, 0, "This is a wall!", color.Black) pygame.display.flip() screen.blit(user, (x, y)) elif event.key == pygame.K_UP: # 上边无墙 if (0 <= roomx <= 42 and 0 < roomy <= 41 and r_list[roomy-1][roomx] == 0): y -= room_size roomy -= 1 steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(steps), color.Black) pygame.display.flip() screen.fill(color.White, (x, y room_size, 10, 10)) screen.blit(user, (x, y)) # 上边有墙 elif (0 <= roomx <= 42 and 0 < roomy <= 41 and r_list[roomy-1][roomx] == 1): steps = 1 font1 = pygame.font.Font(None, 32) font2 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(steps), color.Black) print_text(font2, 350, 0, "This is a wall!", color.Black) pygame.display.flip() screen.blit(user, (x, y)) elif event.key == pygame.K_DOWN: # 下边无墙 if (0 <= roomx <= 42 and 0 <= roomy < 41 and r_list[roomy 1][roomx] == 0): y = room_size roomy = 1 steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(steps), color.Black) pygame.display.flip() screen.fill(color.White, (x, y-room_size, 10, 10)) screen.blit(user, (x, y)) # 下边无墙 elif (0 <= roomx <= 42 and 0 <= roomy < 41 and r_list[roomy 1][roomx] == 1): steps = 1 font1 = pygame.font.Font(None, 32) font2 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(steps), color.Black) print_text(font2, 350, 0, "This is a wall!", color.Black) pygame.display.flip() screen.blit(user, (x, y)) # 更新屏幕 pygame.display.update()

难版迷宫主程序:

import pygame import sys import random import time from pygame.locals import * from random import randint, choice import maze import color # 设置屏幕宽度和高度为全局变量 global screen_width screen_width = 800 global screen_height screen_height = 600 # 输出文本信息 def print_text(font, x, y, text, color, shadow=True): if shadow: imgText = font.render(text, True, (0, 0, 0)) screen.blit(imgText, (x-2,y-2)) imgText = font.render(text, True, color) screen.blit(imgText, (x,y)) # 游戏开始 if __name__ == '__main__': pygame.init() screen = pygame.display.set_mode([screen_width, screen_height]) pygame.display.set_caption('Maze_AI——by Wonz') # 游戏标题 global font1, font2, font3, font4 # 文字 clock = pygame.time.Clock() fps = 20 screen.fill(color.White) r_list = maze.room.creat_map(maze.room_m, maze.room_n) begin_point = [0, 0] begin_room = r_list[0][0] maze.room.creat_migong(r_list, begin_room) # 画出去起点和终点的其他点 for i in range(maze.room_m): for j in range(maze.room_n): begin_point[0] = 25 i * maze.room_size begin_point[1] = 25 j * maze.room_size r_color = color.Black maze.room.draw_room(screen, begin_point, r_list[i][j].walls, maze.room_size, r_color) # 画起点 maze.room.draw_room(screen, [25, 25], [0, 0, 0, 1], maze.room_size, color.White) # 画终点 maze.room.draw_room(screen, [25 (maze.room_m - 1) * maze.room_size, 25 (maze.room_n - 1) * maze.room_size], [0, 1, 0, 0], maze.room_size, color.White) # 加载角色照片 user = pygame.image.load("user.png").convert_alpha() width,height = user.get_size() user = pygame.transform.smoothscale(user, (8,8)) # 画角色 width, height = user.get_size() x = 27 y = 30 roomx = 0 roomy = 0 screen.blit(user, (x, y)) # 键盘控制角色移动 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 走到终点 elif(roomx == maze.room_m-1 and roomy == maze.room_n-1): font4 = pygame.font.Font(None, 32) print_text(font4, 350, 350, "Win" , color.Red) break # 键盘响应,只取按“→”键作为例子,“↑”、“↓”、“←”类似,只要改改参数即可 elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: # 右边无墙 if(r_list[roomx][roomy].walls[1] == False): x = maze.room_size roomx = 1 # 计房间数 maze.steps = 1 # 计步 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) # x:25 y:0 width:200 height:25 screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(maze.steps), color.Black) pygame.display.flip() screen.fill(color.White, (x-15,y,10,10)) screen.blit(user, (x, y)) # 右边有墙 elif (r_list[roomx][roomy].walls[1] == True): maze.steps = 1 font1 = pygame.font.Font(None, 32) font2 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) # x:25 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(maze.steps), color.Black) print_text(font2, 350, 0, "This is a wall!", color.Black) pygame.display.flip() screen.blit(user, (x, y)) elif event.key == pygame.K_LEFT: # 左边无墙 if (r_list[roomx][roomy].walls[3] == False): x -= maze.room_size roomx -= 1 maze.steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(maze.steps), color.Black) pygame.display.flip() screen.fill(color.White, (x 15,y,10,10)) screen.blit(user, (x, y)) # 左边有墙 elif (r_list[roomx][roomy].walls[3] == True): maze.steps = 1 font1 = pygame.font.Font(None, 32) font2 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(maze.steps), color.Black) print_text(font2, 350, 0, "This is a wall!", color.Black) pygame.display.flip() screen.blit(user, (x, y)) elif event.key == pygame.K_UP: # 上边无墙 if (r_list[roomx][roomy].walls[0] == False): y -= maze.room_size roomy -= 1 maze.steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(maze.steps), color.Black) pygame.display.flip() screen.fill(color.White, (x,y 15,10,10)) screen.blit(user, (x, y)) # 上边有墙 elif (r_list[roomx][roomy].walls[0] == True): maze.steps = 1 font1 = pygame.font.Font(None, 32) font2 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(maze.steps), color.Black) print_text(font2, 350, 0, "This is a wall!", color.Black) pygame.display.flip() screen.blit(user, (x, y)) elif event.key == pygame.K_DOWN: # 下边无墙 if (r_list[roomx][roomy].walls[2] == False): y = maze.room_size roomy = 1 maze.steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(maze.steps), color.Black) pygame.display.flip() screen.fill(color.White, (x,y-15,10,10)) screen.blit(user, (x, y)) # 下边无墙 elif (r_list[roomx][roomy].walls[2] == True): maze.steps = 1 font1 = pygame.font.Font(None, 32) font2 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(maze.steps), color.Black) print_text(font2, 350, 0, "This is a wall!", color.Black) pygame.display.flip() screen.blit(user, (x, y)) # 鼠标响应,执行 AI 程序 elif event.type == pygame.MOUSEBUTTONUP: font3 = pygame.font.Font(None, 32) print_text(font3, 750, 0, "AI", color.Red) pygame.display.flip() start_x = 0 start_y = 0 steps = 0 for i in range(1000000000): if (start_x == maze.room_m-1 and start_y == maze.room_n-1): font4 = pygame.font.Font(None, 32) print_text(font4, 350, 350, "Win", color.Red) break d = random.randint(1,4) # 上边无墙 if (d == 1 and 0 <= start_x <= maze.room_m - 1 and 0 <= start_y <= maze.room_n - 1 and r_list[start_x][start_y].walls[0] == False): # 在迷宫地图范围内且上边无墙 start_y -= 1 steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) # x:25 y:0 width:200 height:25 screen.fill(color.White, (300, 0, 200, 25)) # x:300 y:0 width:200 height:25 print_text(font1, 25, 0, "Steps:" str(steps), color.Black) # 步数统计 pygame.display.flip() screen.blit(user, ((start_x 2) * maze.room_size, (start_y 2) * maze.room_size)) # 右边无墙 if (d == 2 and 0 <= start_x <= maze.room_m - 1 and 0 <= start_y <= maze.room_n - 1 and r_list[start_x][start_y].walls[1] == False): start_x = 1 steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(steps), color.Black) pygame.display.flip() screen.blit(user, ((start_x 2) * maze.room_size, (start_y 2) * maze.room_size)) # 下边无墙 if (d == 3 and 0 <= start_x <= maze.room_m - 1 and 0 <= start_y <= maze.room_n - 1 and r_list[start_x][start_y].walls[2] == False): start_y = 1 steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(steps), color.Black) pygame.display.flip() screen.blit(user, ((start_x 2) * maze.room_size, (start_y 2) * maze.room_size)) # 左边无墙 if (d == 4 and 0 <= start_x <= maze.room_m - 1 and 0 <= start_y <= maze.room_n - 1 and r_list[start_x][start_y].walls[3] == False): start_x -= 1 steps = 1 font1 = pygame.font.Font(None, 32) screen.fill(color.White, (25, 0, 200, 25)) screen.fill(color.White, (300, 0, 200, 25)) print_text(font1, 25, 0, "Steps:" str(steps), color.Black) pygame.display.flip() screen.blit(user, ((start_x 2) * maze.room_size, (start_y 2) * maze.room_size)) # 更新屏幕 pygame.display.update()3)效果展示

简易版-----

难版--------

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved