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

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

时间:2025-01-14 17:28:57浏览次数:3  
标签: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

相关文章

  • python 更新pip镜像源
    前言默认情况下pip使用的是国外的镜像,在下载的时候速度非常慢,下载速度是几kb或者几十kb,花费的时间比较长。解决办法国内目前有些机构或者公司整理了对应的镜像源,使得通过内网就能访问即可,下载速度达到几百kb或者几M,速度对比而言简直一个天上,一个地下。国内源:阿里云:http://m......
  • 用 Python 从零开始创建神经网络(二十二):预测(Prediction)/推理(Inference)(完结)
    预测(Prediction)/推理(Inference)(完结)引言完整代码:引言虽然我们经常将大部分时间花在训练和测试模型上,但我们这样做的核心原因是希望有一个能够接受新输入并生成期望输出的模型。这通常需要多次尝试训练最优模型,保存该模型,并加载已保存的模型进行推断或预测。以Fashion......
  • python+django/flask的大学生心理咨询平台java+nodejs+php-计算机毕业设计
    目录技术介绍具体实现截图微信开发者工具HBuilderXuniapp系统设计java类核心代码部分展示登录的业务流程的顺序是:可行性论证详细视频演示技术可行性系统测试系统安全性数据完整性实现思路系统实现源码获取技术介绍如今微信小程序有以下发展优势(1)无须下载,无须注......
  • spring boot基于大数据技术的李宁京东自营店数据分析系统python+nodejs+php-计算机毕
    目录功能和技术介绍具体实现截图开发核心技术:开发环境开发步骤编译运行核心代码部分展示系统设计详细视频演示可行性论证软件测试源码获取功能和技术介绍该系统基于浏览器的方式进行访问,采用springboot集成快速开发框架,前端使用vue方式,基于es5的语法,开发工具Intelli......
  • python+django/flask的影视观享系统(影视评论与评分系统)java+nodejs+php-计算机毕业设
    目录技术栈和环境说明具体实现截图预期达到的目标系统设计详细视频演示技术路线解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示研究方法感恩大学老师和同学源码获取技术栈和环境说明本系统以Python开发语言......
  • python与WRF模型联合应用技术、WRF模式前后处理
    当今从事气象及其周边相关领域的人员,常会涉及气象数值模式及其数据处理,无论是作为业务预报的手段、还是作为科研工具,掌握气象数值模式与高效前后处理语言是一件非常重要的技能。WRF作为中尺度气象数值模式的佼佼者,模式功能齐全,是大部分人的第一选择。而掌握模式还只是第一步,将......
  • 支付宝分分动物运动会,支付宝三分动物运动会,分分动物运动会,三分动物运动会的游戏详细介
    支付宝动物运动会是支付宝应用内一项趣味性的活动,它允许用户通过参与虚拟的动物比赛来获取一些奖励或者积分。这类活动本质上是一种营销手段,旨在增加用户与支付宝平台的互动,提升用户粘性和活跃度。由于活动是在支付宝这一正规、受监管的金融服务平台内进行,因此其背后有严格的运......
  • 使用Python Matplotlib库实现简单散点图的绘制
     一、内容概述本文主要讲述使用Python的Matplotlib绘图库绘制一个简单的散点图Matplot绘制过程如下:导入matplotlib.pyplot库创建图形和子图形对象准备绘制散点图的数据(通常有两个参数,即x轴、y轴的坐标数据)调用子图形的scatter()方法并传入主要参数(x轴,y轴上的两个坐标数据......
  • 使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
    在现代数据分析领域,时间序列数据的处理和预测一直是一个具有挑战性的问题。随着物联网设备、金融交易系统和工业传感器的普及,我们面临着越来越多的高维时间序列数据。这些数据不仅维度高,而且往往包含复杂的时间依赖关系和潜在模式。传统的时间序列分析方法如移动平均等,在处理此类......
  • 电脑进游戏就蓝屏 解决方法分享
    电脑在进入游戏时出现蓝屏是一个比较常见的问题,可能由多种原因导致。以下是一些可能的解决方案:一、软件层面的解决策略更新或回滚显卡驱动:显卡驱动是连接显卡和操作系统的桥梁,如果版本过旧或与游戏不兼容,可能导致蓝屏。尝试更新显卡驱动到最新版本,以确保其与游戏的高度......