大家好,欢迎来到IT知识分享网。
一.贪吃蛇
运行以下代码,将会弹出一个窗口显示贪吃蛇游戏。你可以使用箭头键控制贪吃蛇的移动。吃到食物后蛇的长度会增加,如果蛇触碰到边界或者自己则游戏结束。按下 Q 键退出游戏,按下 C 键重新开始游戏。
import pygame import random # 初始化 pygame.init() # 设置游戏窗口 window_width, window_height = 640, 480 window = pygame.display.set_mode((window_width, window_height)) pygame.display.set_caption('贪吃蛇') # 定义颜色 black = (0, 0, 0) white = (255, 255, 255) green = (0, 255, 0) red = (255, 0, 0) # 定义蛇和食物的大小 block_size = 20 # 设置游戏时钟 clock = pygame.time.Clock() # 定义蛇的移动速度 snake_speed = 15 # 定义字体 font_style = pygame.font.SysFont(None, 30) # 定义得分函数 def score(score): value = font_style.render("得分: " + str(score), True, white) window.blit(value, [0, 0]) # 定义蛇的绘制函数 def snake(snake_list): for x in snake_list: pygame.draw.rect(window, green, [x[0], x[1], block_size, block_size]) # 游戏主循环 def gameLoop(): game_over = False game_close = False # 初始蛇的位置和长度 x1 = window_width / 2 y1 = window_height / 2 x1_change = 0 y1_change = 0 snake_List = [] Length_of_snake = 1 # 初始食物位置 foodx = round(random.randrange(0, window_width - block_size) / 20.0) * 20.0 foody = round(random.randrange(0, window_height - block_size) / 20.0) * 20.0 while not game_over: while game_close == True: window.fill(black) message = font_style.render("游戏结束,按 Q 退出或 C 重新开始", True, white) window.blit(message, [window_width / 6, window_height / 3]) score(Length_of_snake - 1) pygame.display.update() # 游戏重新开始或退出 for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_over = True game_close = False if event.key == pygame.K_c: gameLoop() for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -block_size y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = block_size y1_change = 0 elif event.key == pygame.K_UP: y1_change = -block_size x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = block_size x1_change = 0 # 判断游戏是否结束 if x1 >= window_width or x1 < 0 or y1 >= window_height or y1 < 0: game_close = True x1 += x1_change y1 += y1_change window.fill(black) pygame.draw.rect(window, red, [foodx, foody, block_size, block_size]) snake_Head = [] snake_Head.append(x1) snake_Head.append(y1) snake_List.append(snake_Head) if len(snake_List) > Length_of_snake: del snake_List[0] for x in snake_List[:-1]: if x == snake_Head: game_close = True snake(snake_List) score(Length_of_snake - 1) pygame.display.update() if x1 == foodx and y1 == foody: foodx = round(random.randrange(0, window_width - block_size) / 20.0) * 20.0 foody = round(random.randrange(0, window_height - block_size) / 20.0) * 20.0 Length_of_snake += 1 clock.tick(snake_speed) pygame.quit() # 启动游戏 gameLoop()
二.密室逃脱
在这个例子中,玩家开始游戏后,可以选择进入三个不同的门。根据玩家的选择,通过判断门的编号,来确定游戏的进展,直到玩家成功逃脱或者失败。
请注意,这只是一个简单的示例,实际的密室逃脱游戏可以更加复杂和有趣。你可以根据需要对代码进行修改和扩展。
import random def start_game(): print("你被困在一个密室里,你需要找到钥匙才能逃脱。") print("房间里有三个门,你可以选择其中一个进入。") print("请选择门的编号:1、2、3") door = input("> ") check_door(int(door)) def check_door(door): if door == 1: print("你选择了门1。") print("门1后面是一只狗,你被咬死了。游戏结束!") elif door == 2: print("你选择了门2。") print("门2后面是一条走廊。") print("走廊的尽头有一把钥匙。你成功找到了钥匙,恭喜逃脱!") elif door == 3: print("你选择了门3。") print("门3后面是一只老虎,你被吃掉了。游戏结束!") else: print("无效的选择,请重新选择门的编号:1、2、3") door = input("> ") check_door(int(door)) start_game()
三.五子棋
首先,我们需要创建一个棋盘,并定义一个函数来打印棋盘的当前状态。
def print_board(board): for row in board: print(' '.join(row))
然后,我们可以定义一个函数来检查当前位置是否合法。
def is_valid_move(x, y, board): if x < 0 or x >= len(board) or y < 0 or y >= len(board): return False if board[x][y] != ' ': return False return True
然后,我们可以编写主要的游戏循环,允许两个玩家交替落子。
size = 15 # 棋盘大小 board = [[' ' for _ in range(size)] for _ in range(size)] players = ['X', 'O'] turn = 0 while True: player = players[turn % 2] print(f"轮到玩家 {player},请输入坐标(例如:1,2):") x, y = map(int, input().split(',')) if is_valid_move(x, y, board): board[x][y] = player print_board(board) if is_winner(player, board): print(f"玩家 {player} 获胜!") break turn += 1 else: print("无效的位置,请重新输入!")
运行这个代码,两个玩家将交替输入坐标,直到有一方获胜为止。
以上只是一个简单的五子棋游戏示例,可以根据需要进行扩展和改进。
四.扫雷
运行代码后,根据提示输入行数、列数和地雷数量,然后输入要翻开的方块坐标即可。方块上的数字表示周围的地雷数量,当翻开所有非地雷方块时,游戏胜利;如果踩到地雷,游戏结束。
请注意,这只是一个简单的扫雷游戏示例,可以根据需要进行扩展和改进。
import random # 初始化棋盘 def initialize_board(rows, cols, num_mines): board = [[0] * cols for _ in range(rows)] mines = random.sample(range(rows * cols), num_mines) for mine in mines: row = mine // cols col = mine % cols board[row][col] = -1 for i in range(max(0, row - 1), min(rows, row + 2)): for j in range(max(0, col - 1), min(cols, col + 2)): if board[i][j] != -1: board[i][j] += 1 return board # 打印棋盘 def print_board(board): rows = len(board) cols = len(board[0]) for i in range(rows): for j in range(cols): if board[i][j] == -1: print("*", end=" ") elif board[i][j] == 0: print(".", end=" ") else: print(board[i][j], end=" ") print() # 揭开方块 def reveal_square(board, revealed, row, col): if revealed[row][col]: return revealed[row][col] = True if board[row][col] == 0: for i in range(max(0, row - 1), min(len(board), row + 2)): for j in range(max(0, col - 1), min(len(board[0]), col + 2)): reveal_square(board, revealed, i, j) # 主游戏循环 def play_game(rows, cols, num_mines): board = initialize_board(rows, cols, num_mines) revealed = [[False] * cols for _ in range(rows)] while True: print_board(revealed) row = int(input("请输入要翻开的行号(0-%d):" % (rows-1))) col = int(input("请输入要翻开的列号(0-%d):" % (cols-1))) if board[row][col] == -1: print("游戏结束,你踩到了地雷!") break reveal_square(board, revealed, row, col) # 检查是否胜利 if all(all(revealed_row) for revealed_row in revealed): print_board(revealed) print("恭喜你,扫雷成功!") break # 运行游戏 rows = int(input("请输入行数:")) cols = int(input("请输入列数:")) num_mines = int(input("请输入地雷数量:")) play_game(rows, cols, num_mines)
五.分支樱花树
import random import turtle __Pen = turtle.Pen() # 分形樱花树 # “画树”函数 # 参数分别是树枝长度、画笔 def tree(branchLen, t): if (branchLen > 3): if (8 <= branchLen and branchLen <= 12) : if (random.randint(0, 2) == 0) : t.pencolor('snow') else : t.pencolor('lightcoral') t.pensize((branchLen / 3)) elif (branchLen < 8) : if (random.randint(0, 1) == 0) : t.pencolor('snow') else : t.pencolor('lightcoral') t.pensize((branchLen / 2)) else : t.pencolor('sienna') t.pensize((branchLen / 10)) t.forward(branchLen) a = (1.5 * (random.random())) t.right((20 * a)) b = (1.5 * (random.random())) # 在tree函数内部调自己,这种方式叫递归调用 # 递归可以大幅提升编程效率 tree(branchLen - 10 * b, t) t.left((40 * a)) tree(branchLen - 10 * b, t) t.right((20 * a)) t.penup() t.backward(branchLen) t.pendown() # 绘制树下花瓣,参数分别是画板数、画笔 def petal(m, t): for i in range(m): a = (200 - 400 * (random.random())) b = (10 - 20 * (random.random())) t.penup() t.forward(b) t.left(90) t.forward(a) t.pendown() t.pencolor('lightcoral') t.circle(1) t.penup() t.backward(a) t.right(90) t.backward(b) def main(): t = turtle.Pen() __Pen.hideturtle() t.speed(0) turtle.bgcolor('wheat') t.left(90) t.penup() t.backward(150) t.pendown() t.pencolor('sienna') tree(60, t) petal(100, t) turtle.done() main()
六.彩色弹球
import turtle __Pen = turtle.Pen() # 彩色弹球 t = turtle.Pen() t.speed(0) turtle.bgcolor('black') # 更改sides变量,可以画出完全不同的图形哦 # 改为2、3、4、5、6等,看看效果吧 sides = 5 colors = ['red','yellow','blue','orange','green','purple'] for x in range():#次数越大就越明显 t.pencolor(colors[(x % sides)]) t.forward(((x * 3) / sides + x)) t.left((360 / sides + 1)) t.pensize(((x * sides) / 200)) t.left(90)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130504.html