我们今天做的游戏需要tkinter,sys,random,time以及pygame库

如果有某个库未安装,可以在命令提示符里使用命令:

pip install 库名

——————————————————————————————————————————

安装好库后,我们就要开始编程啦!

——————————————————————————————————————————

首先,导入需要的库:

import pygame as pg
import sys
from random import randint
import time
from tkinter import *
from tkinter import StringVar

接下来,我们给这个程序插入一个进度条,代码如下:

class Progress(object):"""docstring for Progress"""def __init__(self):self.root = Tk()self.root.geometry('245x30')self.root.title('接球游戏下载')self.var = StringVar()self.var.set("开始")self.button =  Button(self.root,textvariable = self.var,command = self.start, width = 5)self.button.grid(row = 0,column = 0,padx = 5)# 创建一个背景色为白色的矩形self.canvas = Canvas(self.root,width = 170,height = 26,bg = "white")# 创建一个矩形外边框(距离左边,距离顶部,矩形宽度,矩形高度),线型宽度,颜色self.out_line = self.canvas.create_rectangle(2,2,180,27,width = 1,outline = "black") self.canvas.grid(row = 0,column = 1,ipadx = 5)self.root.mainloop()def start(self):self.button.config(state="disable") # 设置按钮只允许点击一次fill_line = self.canvas.create_rectangle(2,2,0,27,width = 0,fill = "blue") x = 800   # 未知变量,可更改n = 900/x  # 180是矩形填充满的次数k = 100/x  # 显示值for i in range(x):n = n+180/xk = k+100/x# 以矩形的长度作为变量值更新self.canvas.coords(fill_line, (0, 0, n, 30))if k >= 100:self.var.set("100%")time.sleep(0.3)self.root.quit()else:self.var.set(str(round(k,1))+"%")self.root.update()time.sleep(0.01)if __name__ == '__main__':Progress()

上面的代码无需看懂,只是一个可要可不要的小插件。

———————————————————————————————————————————

然后,我们建立起一个窗口:

长宽是:600,500

命名为:接球游戏

pg.init()
game_window=pg.display.set_mode((600,500))
pg.display.set_caption("接球游戏")

———————————————————————————————————————————接下来,我们定义球的颜色,位置和分数:

font=pg.font.Font(None,60)
window_color=(0,0,0)
ball_color=(0,255,0)
rect_color=(255,0,0)move_x=1
move_y=1
ball_x=randint(20,580)
ball_y=randint(20,480)points=1
count=0

——————————————————————————————————————————

主函数部分,不断以分数的增加控制球的速度,以及判断球是否碰到了边缘或玩家控制的矩形上。

代码如下:

while True:game_window.fill(window_color)for event in pg.event.get():if event.type==pg.QUIT:sys.exit()mouse_x,mouse_y=pg.mouse.get_pos()pg.draw.circle(game_window,ball_color,(ball_x,ball_y),20)pg.draw.rect(game_window,rect_color,(mouse_x,490,100,10))ball_x +=move_xball_y +=move_ymy_score=font.render(str(score),False,(255,255,0))game_window.blit(my_score,(500,30))ball_x +=move_xball_y +=move_yif ball_x<=20 or ball_x>=580:move_x=-move_xif ball_y<=20:move_y=-move_yelif (ball_x>mouse_x-20 and ball_x<mouse_x+120) and ball_y>=470:move_y=-move_yscore+=pointscount+=1if count==5:count=0points+=pointsif move_x>0:move_x+=1else:move_x-=1move_y-=1elif ball_y>480 and (ball_x<=mouse_x-20 or ball_x>=mouse_x+120):ball_y=490breakpg.display.update()time.sleep(0.01)
time.sleep(1)    

以下是完整代码:

import pygame as pg
import sys
from random import randint
import timefrom tkinter import *
from tkinter import StringVar
import timeclass Progress(object):"""docstring for Progress"""def __init__(self):self.root = Tk()self.root.geometry('245x30')self.root.title('接球游戏下载')self.var = StringVar()self.var.set("开始")self.button =  Button(self.root,textvariable = self.var,command = self.start, width = 5)self.button.grid(row = 0,column = 0,padx = 5)# 创建一个背景色为白色的矩形self.canvas = Canvas(self.root,width = 170,height = 26,bg = "white")# 创建一个矩形外边框(距离左边,距离顶部,矩形宽度,矩形高度),线型宽度,颜色self.out_line = self.canvas.create_rectangle(2,2,180,27,width = 1,outline = "black") self.canvas.grid(row = 0,column = 1,ipadx = 5)self.root.mainloop()def start(self):self.button.config(state="disable") # 设置按钮只允许点击一次fill_line = self.canvas.create_rectangle(2,2,0,27,width = 0,fill = "blue") x = 800   # 未知变量,可更改n = 900/x  # 180是矩形填充满的次数k = 100/x  # 显示值for i in range(x):n = n+180/xk = k+100/x# 以矩形的长度作为变量值更新self.canvas.coords(fill_line, (0, 0, n, 30))if k >= 100:self.var.set("100%")time.sleep(0.3)self.root.quit()else:self.var.set(str(round(k,1))+"%")self.root.update()time.sleep(0.01)if __name__ == '__main__':Progress()pg.init()
game_window=pg.display.set_mode((600,500))
pg.display.set_caption("接球游戏")
score=0
font=pg.font.Font(None,60)
window_color=(0,0,0)
ball_color=(0,255,0)
rect_color=(255,0,0)move_x=1
move_y=1
ball_x=randint(20,580)
ball_y=randint(20,480)points=1
count=0while True:game_window.fill(window_color)for event in pg.event.get():if event.type==pg.QUIT:sys.exit()mouse_x,mouse_y=pg.mouse.get_pos()pg.draw.circle(game_window,ball_color,(ball_x,ball_y),20)pg.draw.rect(game_window,rect_color,(mouse_x,490,100,10))ball_x +=move_xball_y +=move_ymy_score=font.render(str(score),False,(255,255,0))game_window.blit(my_score,(500,30))ball_x +=move_xball_y +=move_yif ball_x<=20 or ball_x>=580:move_x=-move_xif ball_y<=20:move_y=-move_yelif (ball_x>mouse_x-20 and ball_x<mouse_x+120) and ball_y>=470:move_y=-move_yscore+=pointscount+=1if count==5:count=0points+=pointsif move_x>0:move_x+=1else:move_x-=1move_y-=1elif ball_y>480 and (ball_x<=mouse_x-20 or ball_x>=mouse_x+120):ball_y=490breakpg.display.update()time.sleep(0.01)
time.sleep(1)    

pygame简单弹弹球游戏(弹来弹去)相关推荐

  1. pygame简单的俄罗斯方块游戏和简单的打字游戏

    1.pygame简单的俄罗斯方块游戏 一.对战的方块管理 定义一个BlockManage管理对战的方块 根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在 ...

  2. java弹球游戏代码_Java实现简单的弹球游戏

    本文实例为大家分享了Java实现简单的弹球游戏的具体代码,供大家参考,具体内容如下 该程序主要是用于对java图形化界面编程进行联系,程序实现全部采用的是AWT包下的类. 程序仅做参考,供学习使用. ...

  3. java弹球游戏弹到顶会得分_java实现简单的弹球游戏

    弹球游戏实现原理: 隔一定时间(小于1秒)重新绘制图像,因为graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建canvas的子类,只需要重写它的paint ...

  4. python中的pygame弹球游戏代码_python pygame实现挡板弹球游戏

    学了一天pygame,用python和pygame写一个简单的挡板弹球游戏 GitHub: # -*- coding:utf-8 -*- from sys import exit import pyg ...

  5. python中的pygame弹球游戏代码_使用python和pygame制作挡板弹球游戏

    python是个很有趣的语言,可以在cmd命令窗口运行,还有很多的功能强大的模块. 学了一天pygame,用python和pygame写一个简单的挡板弹球游戏. 2018年6月21日 00:15:21 ...

  6. python编写一个弹球游戏_python pygame实现挡板弹球游戏

    学了一天pygame,用python和pygame写一个简单的挡板弹球游戏 GitHub: # -*- coding:utf-8 -*- from sys import exit import pyg ...

  7. 弹球小游戏java代码_java实现简单的弹球游戏

    弹球游戏实现原理: 隔一定时间(小于1秒)重新绘制图像,因为Graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建Canvas的子类,只需要重写它的paint ...

  8. 《Arduino开发实战指南:LabVIEW卷》6.6 基于Arduino的弹珠游戏

    6.6 基于Arduino的弹珠游戏 6.6.1 实现的功能 本节将使用LabVIEW及Arduino设计实现一个简单的弹珠游戏.该弹珠游戏规则为,左右移动挡板,使弹珠在矩形区域内运动而不掉落到矩形区 ...

  9. 计算机弹钢琴游戏,节奏弹钢琴

    节奏弹钢琴是一款节奏的游戏,炫酷画风,在节奏弹钢琴开始时玩家需要跟着游戏里面的节奏不断的点击按键完成一首曲子还是你用钢琴弹奏的,游戏里面的曲子超级的多,在这里选择不同的曲子,边唱边跳的感受欢快节奏.玩 ...

最新文章

  1. Spark Streaming笔记整理(二):案例、SSC、数据源与自定义Receiver
  2. pyqt5 QtDesigner文件打开位置
  3. 学习org-mode
  4. 二进制状态压缩相关操作
  5. 《算法之道》精华 经典算法部分
  6. Java List<Object>去掉重复对象-java8
  7. springboot 使用 minio
  8. stm32 web get 参数_BlackHat2020议题之Web缓存投毒
  9. 基于HMM的连续小词量语音识别 - 模拟技术 - 电子发烧友网
  10. 【工具使用】git使用--将本地代码上传到icode代码库踩坑总结
  11. 等差数列及等比数列求和公式
  12. python NLP中文近义词
  13. html div 360旋转动画效果,分享4种CSS3效果(360度旋转、旋转放大、放大、移动)
  14. Vue3 学习笔记 —— transition、transition-group
  15. photoshop修色圣典 第5版pdf
  16. 头像怎么画,日系头像绘画教程
  17. 2022年中国现制咖啡行业市场规模及重点企业经营现状分析:市场规模达89.7亿元[图]
  18. VUE2.0全局方法注册
  19. 一键制作三维真实地形DEM
  20. IOS成长之路-Nsstring中搜索方法rangeOfString

热门文章

  1. JavaScript[ LXF教程(一) ]
  2. 【HDOJ】4704 Sum_天涯浪子_新浪博客
  3. 亿信华辰|什么是数字孪生,其应用价值表现在哪些方面?
  4. 关于保险丝的慢断和快断的差别和区分?
  5. hexo主题切换可能出现的错误
  6. hexo主题应用中遇到的问题和解决方案(持续更新中)
  7. apdl与传统计算机语言,用Ansys APDL语言实现复杂边界条件的加载
  8. nginx菜鸟教程php,nginx菜鸟教程三
  9. python训练营 朋友圈_项目分享|5步教你用Python制作朋友圈个性签名
  10. 自动填写人员信息表格——团支书办公自动化实战1