首页 > 编程语言 >【python游戏】最经典的五个小游戏(完整代码)

【python游戏】最经典的五个小游戏(完整代码)

时间:2025-01-14 17:28:57浏览次数:10  
标签:ball 游戏 python screen paddle 小游戏 pygame print board

文章目录


前言

当然,我可以为你提供五个简单的Python游戏案例。这些游戏涵盖了不同的难度和类型,从文本冒险到简单的图形界面游戏。这些游戏将使用不同的库,比如pygame用于图形界面游戏,而纯文本游戏则不需要额外的库。


案例1: 猜数字游戏

这是一个简单的文本冒险游戏,玩家需要在一定次数内猜出计算机生成的随机数。

代码示例:

import random
 
def guess_number():
    number_to_guess = random.randint(1, 100)
    attempts = 0
    print("猜一个1到100之间的数字。")
 
    while True:
        guess = int(input("你的猜测: "))
        attempts += 1
 
        if guess < number_to_guess:
            print("太小了!")
        elif guess > number_to_guess:
            print("太大了!")
        else:
            print(f"恭喜你,猜对了!你一共用了{attempts}次。")
            break
 
if __name__ == "__main__":
    guess_number()

案例2: 石头剪刀布游戏

这是一个玩家与计算机对战的石头剪刀布游戏。

代码示例:

import random
 
def rock_paper_scissors():
    choices = ['石头', '剪刀', '布']
    computer_choice = random.choice(choices)
    player_choice = input("请输入你的选择(石头、剪刀、布): ")
 
    if player_choice not in choices:
        print("无效输入,请重新运行游戏。")
    else:
        if player_choice == computer_choice:
            print("平局!")
        elif (player_choice == '石头' and computer_choice == '剪刀') or \
             (player_choice == '剪刀' and computer_choice == '布') or \
             (player_choice == '布' and computer_choice == '石头'):
            print("你赢了!")
        else:
            print("你输了!")
        print(f"计算机的选择是: {computer_choice}")
 
if __name__ == "__main__":
    rock_paper_scissors()

案例3: 使用pygame的简单打砖块游戏

这个案例需要安装pygame库,可以使用pip install pygame进行安装。

代码示例:

import pygame
import sys
 
pygame.init()
 
screen_width = 800
screen_height = 600
ball_radius = 10
paddle_width = 75
paddle_height = 10
paddle_speed = 5
ball_speed_x = 7
ball_speed_y = 7
 
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("打砖块游戏")
 
white = (255, 255, 255)
black = (0, 0, 0)
 
ball_x = screen_width // 2
ball_y = screen_height - 30
paddle_x = (screen_width - paddle_width) // 2
 
bricks = []
for c in range(8):
    brick_height = 50 - c * 7  # 50 is the height of the first row of bricks
    for r in range(10):
        bricks.append(pygame.Rect(r * (screen_width // 10), 30 + c * 7, screen_width // 10 - 5, brick_height))
 
def draw_bricks(bricks):
    for brick in bricks:
        pygame.draw.rect(screen, black, brick)
 
running = True
clock = pygame.time.Clock()
 
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
 
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and paddle_x > 0:
        paddle_x -= paddle_speed
    if keys[pygame.K_RIGHT] and paddle_x < screen_width - paddle_width:
        paddle_x += paddle_speed
 
    ball_x += ball_speed_x
    ball_y += ball_speed_y
 
    if ball_x - ball_radius < 0 or ball_x + ball_radius > screen_width:
        ball_speed_x = -ball_speed_x
 
    if ball_y - ball_radius < 0:
        ball_speed_y = -ball_speed_y
 
    if ball_y + ball_radius > screen_height:
        running = False
 
    paddle_rect = pygame.Rect(paddle_x, screen_height - paddle_height, paddle_width, paddle_height)
    if paddle_rect.collidepoint(ball_x, ball_y):
        ball_speed_y = -ball_speed_y
 
    screen.fill(white)
    pygame.draw.ellipse(screen, black, (ball_x - ball_radius, ball_y - ball_radius, ball_radius * 2, ball_radius * 2))
    pygame.draw.rect(screen, black, paddle_rect)
    draw_bricks(bricks)
 
    for brick in bricks[:]:
        if brick.collidepoint(ball_x, ball_y):
            bricks.remove(brick)
            ball_speed_y = -ball_speed_y
            break
 
    pygame.display.flip()
    clock.tick(60)
 
pygame.quit()
sys.exit()

案例4: 井字棋(Tic-Tac-Toe)

这是一个文本模式的井字棋游戏,玩家与计算机对战。

代码示例:

def print_board(board):
    for row in board:
        print("|".join(row))
        print("-" * 5)
 
def check_winner(board, player):
    # 检查行
    for row in board:
        if all([spot == player for spot in row]):
            return True
    # 检查列
    for col in range(3):
        if all([board[row][col] == player for row in range(3)]):
            return True
    # 检查对角线
    if all([board[i][i] == player for i in range(3)]) or all([board[i][2-i] == player for i in range(3)]):
        return True
    return False
 
def is_board_full(board):
    return all([spot != " " for row in board for spot in row])
 
def tic_tac_toe():
    board = [[" " for _ in range(3)] for _ in range(3)]
    current_player = "X"
 
    while True:
        print_board(board)
        row = int(input("输入行 (0, 1, 2): "))
        col = int(input("输入列 (0, 1, 2): "))
 
        if board[row][col] != " ":
            print("这个格子已经被占了,请选择另一个格子。")
            continue
 
        board[row][col] = current_player
 
        if check_winner(board, current_player):
            print_board(board)
            print(f"玩家 {current_player} 赢了!")
            break
 
        if is_board_full(board):
            print_board(board)
            print("平局!")
            break
 
        current_player = "O" if current_player == "X" else "X"
 
if __name__ == "__main__":
    tic_tac_toe()

案例5: 贪吃蛇游戏(使用pygame)

这个案例也需要pygame库。

代码示例:

import pygame
import sys
import random
 
pygame.init()
 
screen_width = 640
screen_height = 480
cell_size = 20
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("贪吃蛇游戏")
 
clock = pygame.time.Clock()
 
white = (255, 255, 255)
green = (0, 255, 0)
red = (255, 0, 0)
 
snake_block = 10
snake_speed = 15
 
font_style = pygame.font.SysFont(None, 35)
 
def message(msg, color):
    mesg = font_style.render(msg, True, color)
    screen.blit(mesg, [screen_width / 6, screen_height / 3])
 
def gameLoop():
    game_over = False
    game_close = False
 
    x1 = screen_

标签:ball,游戏,python,screen,paddle,小游戏,pygame,print,board
From: https://blog.csdn.net/2401_89383448/article/details/145144045

相关文章