Python弹球小游戏

news2025/1/20 5:56:17

========给在校的小妹妹做个游戏玩:.

弹珠游戏主要是靠坐标xy,接板长度,球的半径等决定:

在这里插入图片描述
在这里插入图片描述

# -*- coding: utf-8 -*-
# @Author  : Codeooo
# @Time    : 2022/04/29


import sys
import time
import random
import pygame as pg

print("""				欢迎使用Codeooo游戏平台

	1.登录账号密码,正确直接进入2,若输入3次也可以进入,但提示游客身份进入。
	2.系统产生1-20随机数,猜对直接进入3,或猜错6次也可以进入,但提示未通关。
	3.接小球游戏,每三次速度加快,分数翻倍。

		********谢谢大家观看*******
	""")


def game_login():
    count = 0
    while count < 3:
        name = str(input("请输入帐号"))
        passwd = str(input("请输入密码"))
        if (name != "codeooo" or passwd != "666"):
            count += 1
            s = 3 - count
            print("输入错误,还剩%d次机会\n" % s)
            if s == 0:
                print("您是游客身份登录")
        else:
            print("尊敬的VIP Codeooo 登录成功,直接进入游戏\n")
            break


def game_random():
    count = 0
    number = random.randint(1, 20)
    print("""		######系统将要产生1-20随机数######
          #########猜对直接进入游戏###############
         ########猜大会提示大,猜小提示小了########
        ###猜错6次也可以进入游戏,但本次游戏未通关####
    
        """)
    print(number)
    while True:
        num = int(input("请输入您要猜的数"))
        count += 1
        if (count <= 6):
            if (num == number):
                print("您通关了,总共输入了%d次\n" % (count))
                print("成功,进入下一个游戏\n")
                break
            elif (num < number):
                print("您输入小了,请再猜猜看\n")
            else:
                print("您输入大了,请再猜猜看\n")
        else:
            print("""	  ******本关未通关*********
                  *******输入次数已经达到6次***
                *********进入下一个游戏************
    
                    """)
            break


def boll_game():
    pg.init()  # 对模块进行初始化操作
    game_window = pg.display.set_mode((600, 500))  # 画窗口,用方法,这个方法可以生成一个游戏窗口,里面的参数需要给一个元组,元组的两个元素分别是窗口的宽和高
    pg.display.set_caption('接球')  # 标题
    window_color = (0, 0, 255)  # 蓝色rgb元组里面的元素,用rgb来表示
    ball_color = (255, 165, 0)  # 黄色的rgb值
    rect_color = (255, 0, 0)
    score = 0
    font = pg.font.SysFont('arial', 70)
    ball_x = random.randint(20, 580)  # 用random模块生成一个随机数,不让球固定定义两个变量来保存球的位置,球的半径定义为20
    ball_y = 20  # 球在y轴的变量
    move_x = 1  # 通过一个变量将值保存下来,通过改变变值得大小来改变球的速度
    move_y = 1
    point = 1
    count = 0
    print("\n")
    print("游戏开始\n")
    while True:

        game_window.fill(window_color)  # 传递参数
        for event in pg.event.get():  # 可退出,这是一个状态
            if event.type == pg.QUIT:  #
                sys.exit()  # sys模块里面的方法

        mouse_x, mouse_y = pg.mouse.get_pos()  # 用来接收鼠标返回的xy坐标
        pg.draw.circle(game_window, ball_color, (ball_x, ball_y), 20)  #
        pg.draw.rect(game_window, rect_color, (mouse_x, 490, 100, 10))  # rectangle的缩写,画一个矩形
        my_text = font.render(str(score), False, (255, 255, 255))
        game_window.blit(my_text, (500, 30))  # 这个位置是经过调试,感觉比较合适
        ball_x += move_x  # 每次横纵坐标都加1,这样看起来比较快,就像球在动
        ball_y += move_y
        if ball_x <= 20 or ball_x >= 580:
            move_x = -move_x  # 将加改为减就是向反方向移动
        if ball_y <= 20:
            move_y = -move_y
        elif mouse_x - 20 < ball_x < mouse_x + 120 and ball_y >= 470:
            move_y = -move_y
            score += point  # 需要一个变量来保存每次加的点数
            count += 1
            if count == 3:  # 需要一个变量来保存每次接的次数
                count = 0  # 将其重置为0
                point += point
                if move_x > 0:
                    move_x += 1
                else:
                    move_x -= 1
                move_y -= 1
        elif ball_y >= 480 and (ball_x <= mouse_x - 20 or ball_x >= mouse_x + 120):
            print("游戏结束")
            time.sleep(3)
            break
        pg.display.update()  # 更新窗口
        time.sleep(0.005)  # 如果感觉慢的话,自己可以调


def run():
    game_login()
    game_random()
    boll_game()


if __name__ == '__main__':
    run()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/884109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP三次握手,四次挥手,SYN泛洪攻击

目录 一.三次握手 二.SYN泛洪攻击概念 三.四次挥手 一.三次握手 当客户端调用connect连接服务器时,底层会发生“三次握手”&#xff0c;握手成功&#xff0c;建立连接,connect解阻塞&#xff0c;继续执行。 TCP报头&#xff1a; 三次握手过程&#xff1a; 客户端发出SYN请求…

P16 电路定理——巧妙-灵性-智慧

1、诺顿定理的证明 诺顿定理的证明&#xff0c; 回忆戴维南定理的证明是&#xff0c;在a,b两端加上一个电流源&#xff0c;再根据叠加定理&#xff0c;就解电压Uab。 对偶原理&#xff1a; 在a,b两端加上一个电压源u&#xff0c;再根据叠加定理求A中的独立源作用是给到a&#x…

下一代计算:嵌入AI的云/雾/边缘/量子计算

计算系统在过去几十年中推动了计算机科学的发展&#xff0c;现在已成为企业世界的核心&#xff0c;提供基于云计算、雾计算、边缘计算、无服务器计算和量子计算的服务。现代计算系统解决了现实世界中许多需要低延迟和低响应时间的问题。这有助于全球各地的青年才俊创办初创企业…

【学会动态规划】环形子数组的最大和(20)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

用友时空KSOA SQL注入漏洞[2023-HW]

用友时空KSOA SQL注入漏洞 一、 产品简介二、 漏洞分析三、 影响范围四、 复现环境五、 漏洞复现小龙POC检测脚本:批量SQL注入源码 六、 修复建议**临时缓解方案**升级修复方案 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供…

vue3+vite+pinia

目录 一、项目准备 1.1、Vite搭建项目 1.2、vue_cli创建项目 二、组合式API(基于setup) 2.1、ref 2.2、reactive 2.3、toRefs 2.4、watch和watchEffect 2.5、computed 2.6、生命周期钩子函数 2.7、setup(子组件)的第一个参数-props 2.8、setup(子组件)的第二个参数…

springboot父服务下创建子服务,依赖管理

在微服务中&#xff0c;我们会有一个父服务&#xff0c;下面建多个子服务。 1、创建子服务 2、子服务依赖父服务 引入父工程 3、父工程管理子服务 4、查看依赖正常 结束&#xff01;&#xff01; hy:25 知识是对灵魂的澄清。 -- 柏拉图《理想国》

29 深度玻尔兹曼机

文章目录 29 深度玻尔兹曼机29.1 背景介绍29.2 DBM的叠加方式 29 深度玻尔兹曼机 29.1 背景介绍 过去在解决BM问题的时候&#xff0c;提出过多种模型&#xff1a;RBM、SBN、DBN 其中RBM是一种有限制条件的&#xff0c;简化的BM&#xff0c;限制了隐藏层和观测层内部都没有连…

GEE学习05

修改输出绝对路径 和python里面一样&#xff0c;修改输出底图的路劲&#xff1a; Map3.save(r"C:\test\topo.html")1、浏览一下GEE帮助文档 https://developers.google.cn/earth-engine/guides 这个链接是国内外都可以正常访问的。 GEE指导主要是针对的JS&#xf…

Verdi_Annotate Macro功能

Verdi_Annotate Macro功能 介绍 When debugging designs that contain define macros, it is often helpfull to view a macro definition in the context of a macro reference. 在调试包含定义宏的设计时&#xff0c;在宏引用上下文中查看宏定义通常会很有帮助。 方法 Sh…

PDM/PLM系统建设

仅供学习使用&#xff0c;会随时更新 工程机械跨生命周期数据管理系统 来源&#xff1a;清华大学 浅论企业PDM/PLM系统建设成功经验 来源&#xff1a;e-works 作者&#xff1a;陈凡 https://articles.e-works.net.cn/pdm/article149572.htm 随着“中国制造2025”强基工程战略的…

髋关节 弹响

评估测试 https://www.bilibili.com/video/BV1A44y1j71Y/?spm_id_from333.880.my_history.page.click&vd_source3535bfaa5db8443d107998d15e88dc44 根据此视频整理所得 托马斯测试 第一种情况 如果你难于将膝关节拉到胸前&#xff0c;并感觉前面有骨性的挤压 说明你股…

六、Linux系统下,文件操作命令都有哪些?

总括&#xff1a; 创建文件/文件夹&#xff1a;touch&#xff1b; 查看&#xff1a;cat/more&#xff1b; 复制&#xff1a;copy&#xff1b; 移动文件/文件夹&#xff1a;mv&#xff1b; 删除&#xff1a;rm&#xff1b; 1、创建文件 &#xff08;1&#xff09;语法&#x…

VS2015项目中,MFC内存中调用DLL函数(VC6生成的示例DLL)

本例主要讲一下&#xff0c;用VC6如何生成DLL&#xff0c;用工具WinHex取得DLL全部内容&#xff0c;VC2015项目加载内存中的DLL函数&#xff0c;并调用函数的示例。 本例中的示例代码下载&#xff0c;点击可以下载 一、VC6.0生成示例DLL项目 1.新建项目&#xff0c;…

PAT 1079 Total Sales of Supply Chain

个人学习记录&#xff0c;代码难免不尽人意。 A supply chain is a network of retailers&#xff08;零售商&#xff09;, distributors&#xff08;经销商&#xff09;, and suppliers&#xff08;供应商&#xff09;-- everyone involved in moving a product from supplier…

sleep以及如何正确终止线程

Thread.sleep()为什么要抛出中断异常或者放入try-catch中&#xff1f; 因为&#xff1a;在 sleep 的同时也要对外界情况有感知能力&#xff0c;也就是能够响应中断。比如在调用 interrupt() 的时候&#xff0c;其实就是想尽快地结束线程&#xff0c;所以&#xff0c;继续的 sl…

结构体指针变量的使用

1、结构体指针的引用 #include<iostream> using namespace std;struct Student {int num;char name[32]; }; int main() {struct Student stu {1,"张三"};struct Student* p &stu;system("pause"); return 0; } 2、通过结构体指针访问结构体…

使用Scanner接收用户输入

扫描输入的两种方式 Scanner主要提供了两个方法来扫描输入&#xff1a; &#xff08;1&#xff09;hasNextXxx()&#xff1a;是否还有下一个输入项&#xff0c;Xxx可以是Int&#xff0c;Long等代表基本数据类型的字符串。 如果只是判断是否包含下一个字符串&#xff0c;则直…

Spring Boot(六十四):SpringBoot集成Gzip压缩数据

1 实现思路 2 实现 2.1 创建springboot项目 2.2 编写一个接口,功能很简单就是传入一个Json对象并返回 package com.example.demo.controller;import com.example.demo.entity.Advertising; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springf…

Vue3 Axios网络请求简单应用

cd 到项目 安装Axios&#xff1a;cnpm install --save axios post传递参数 需要安装querystring 用于转换参数格式&#xff1a;cnpm install --save querystring 运行示例&#xff1a; 后台接口&#xff1a; GetTestData.java package com.csdnts.api;import java.io.IOExce…