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判断文件和字符串编码类型的实例
Dec 21 Python
Django model序列化为json的方法示例
Oct 16 Python
python截取两个单词之间的内容方法
Dec 25 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
什么是python的自省
Jun 21 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
详解python datetime模块
Aug 17 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
python中xlrd模块的使用详解
Feb 01 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
Elasticsearch 批量操作
Apr 19 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 #Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
python Tkinter的简单入门教程
You might like
php 上传功能实例代码
2010/04/13 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
php微信公众号开发模式详解
2016/11/28 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
JS跨域问题详解
2014/11/25 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
浅析vue深复制
2018/01/29 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
python爬虫之百度API调用方法
2017/06/11 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
python实现发送邮件
2021/03/02 Python
百度JavaScript笔试题
2015/01/15 面试题
业务主管岗位职责范本
2013/12/25 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis