python实现简单反弹球游戏


Posted in Python onApril 12, 2021

python简单游戏-反弹球,供大家参考,具体内容如下

tkinter实现,直接贴上代码

from tkinter import*
import time
import random

class Ball:
    def __init__(self,canvas,paddle,color):
        self.canvas = canvas
        self.paddle = paddle
        self.id = canvas.create_oval(10,10,25,25,fill=color)
        self.canvas.move(self.id,245,100)
        starts = [-3,-2,-1,1,2,3]
        random.shuffle(starts)
        self.x = starts[0]
        self.y = -3
        self.canvas_height = self.canvas.winfo_height()
        self.canvas_width = self.canvas.winfo_width()
        self.hit_bottom = False

    def hit_paddle(self,pos):
        paddle_pos=self.canvas.coords(self.paddle.id)
        if pos[2]>=paddle_pos[0] and pos[0]<=paddle_pos[2]:
            if pos[3]>=paddle_pos[1] and pos[3]<=paddle_pos[3]:
                return True
        return False

    def draw(self):
        self.canvas.move(self.id,self.x,self.y)
        pos = self.canvas.coords(self.id)
        if pos[1] <= 0:
            self.y = 4
        if pos[3] >= self.canvas_height:
            self.hit_bottom=True
        if self.hit_paddle(pos)==True:
            self.y=-4
        if pos[0] <= 0:
            self.x = 4
        if pos[2] >= self.canvas_width:
            self.x = -4

class Paddle:
    def __init__(self,canvas,color):
        self.canvas = canvas
        self.id = canvas.create_rectangle(0,0,100,10,fill=color)
        self.canvas.move(self.id,200,400)
        self.x=0
        self.canvas_width = self.canvas.winfo_width()
        canvas.bind_all('<KeyPress-Left>',self.turn_left)
        canvas.bind_all('<KeyPress-Right>',self.turn_right)
        self.hit_bottom = False

    def draw(self):
        self.canvas.move(self.id,self.x,0)
        pos = self.canvas.coords(self.id)
        if pos[0] <= 0:
            self.x = 0
        elif pos[2] >= self.canvas_width:
            self.x = 0

    def turn_left(self,evt):
        self.x=-7

    def turn_right(self,evt):
        self.x=7 
        
tk = Tk()
tk.title("反弹吧!球球")
#tk.resizable(0,0)
tk.wm_attributes("-topmost",1)
canvas = Canvas(tk,width=650,height=600,bd=0,highlightthickness=0)
canvas.pack()
tk.update()

paddle=Paddle(canvas,'blue')
ball = Ball(canvas,paddle,'red')

while 1:
    if ball.hit_bottom==False:
        ball.draw()
        paddle.draw()
    tk.update_idletasks()
    tk.update()
    time.sleep(0.01)

效果:

python实现简单反弹球游戏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python方向键控制上下左右代码
Jan 20 Python
TensorFlow的权值更新方法
Jun 14 Python
python中的turtle库函数简单使用教程
Jul 23 Python
Python读取excel中的图片完美解决方法
Jul 27 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
Python PyQt5整理介绍
Apr 01 Python
python实点云分割k-means(sklearn)详解
May 28 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 #Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
python Tkinter的简单入门教程
You might like
PHP开发文件系统实例讲解
2006/10/09 PHP
pw的一个放后门的方法分析
2007/10/08 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
详解vue-cli中配置sass
2017/06/21 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
深入浅析Python中的yield关键字
2018/01/24 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
Python 函数返回值的示例代码
2019/03/11 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
2014年电教工作总结
2014/12/19 职场文书
先进班集体事迹材料
2014/12/25 职场文书
贷款工作证明模板
2015/06/12 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
apache ftpserver搭建ftp服务器
2022/05/20 Servers