python3.6使用tkinter实现弹跳小球游戏

本文实例为大家分享了python3.6实现弹跳小球游戏的具体代码,供大家参考,具体内容如下

import random
import time
from tkinter import *

#下面定义一个球的类,有canvas和color两个对象
class Ball:   #定义一个Ball类的函数
  def __init__(self,canvas,paddle,color):#这是Ball类的属性函数,Ball类下的函数都有这些性质
    self.canvas=canvas
    self.paddle=paddle
    self.id=canvas.create_oval(10,10,25,25,fill=color)#返回所绘小球的调用值放入对象self.id
    self.canvas.move(self.id,245,100)  #移动小球到(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()#画布高度函数winfo_height()返回值放入canvas_height对象中
    self.canvas_width=self.canvas.winfo_width() #winfo_width()返回画布宽度放入canvas_width对象中
    self.hit_bottom=False  #设定hit_bottom初始值为false

  def hit_paddle(self,pos):  #声明函数,以供调用
    paddle_pos=self.canvas.coords(self.paddle.id)  #将球拍的(x1,y1)(x2,y2)的坐标放到paddle_pos中
    if pos[2]>=paddle_pos[0] and pos[0]<=paddle_pos[2]: #
      if pos[3]>=paddle_pos[1] and pos[3]<=paddle_pos[3]:  #比较小球y轴是否在球拍y轴内
        return True   #表示小球碰到了球拍
    return False #表示小球没有碰到球拍

  def draw(self):  #声明draw函数,
    self.canvas.move(self.id,self.x,self.y)  #移动小球,移动速度为(self.x,self.y),在init中的属性可以直接用
    pos=self.canvas.coords(self.id)#把小球的左上角和右下角的坐标以列表形式(可能元组)放入pos对象中
    if pos[1]<=0:   #如果小球碰到画布上方
      self.y=3   #则改变移动方向向下方
    if pos[3]>=self.canvas_height: #如果小球碰到画布底端 则返回hit_bottom为True
      self.hit_bottom=True
    if self.hit_paddle(pos)==True: #小球碰到了球拍,则改变Y轴方向向上运动
      self.y=-3
    if pos[0]<=0:  #如果小球碰到了画布左边,则把X轴速度改成每次向右3个像素
      self.x=3
    if pos[2]>=self.canvas_width:  #如果小球碰到了画布右边,则把速度改成每次向左3个像素
      self.x=-3

class Paddle:   #定义一个paddle类
  def __init__(self,canvas,color): #paddle类的属性函数,默认有两个变量画布和颜色
    self.canvas=canvas  #将canvas对象赋给self.canvas
    self.id=canvas.create_rectangle(0,0,100,10,fill=color)  #创建球拍,将球拍的调用编号存入self.id
    self.canvas.move(self.id,200,300)   #将球拍移动到(200,300)处
    self.x=0  #
    self.canvas_width=self.canvas.winfo_width()  #将画布的宽度放入canvas_width对象
    self.canvas.bind_all('<KeyPress-Left>',self.turn_left)  #用bind_all()函数绑定键盘左键与tun_left函数
    self.canvas.bind_all('<KeyPress-Right>',self.turn_right) #绑定键盘右键与turn_right函数

  def draw(self):  #声明一个draw函数
    self.canvas.move(self.id,self.x,0) #左右移动球拍的速度为self.x,默认不动
    pos=self.canvas.coords(self.id)  #将球拍的左上角和右下角的坐标存入pos对象中
    if pos[0]<=0:    #如果球拍x轴小于0,则不再向右移动
      self.x=0
    elif pos[2]>=self.canvas_width: #如果球拍要超过画布右侧了,则球拍的移动速度变为0
      self.x=0

  def turn_left(self,evt):#这里的evt是调用方传过来的参数,改变球拍的移动速度向左,
    self.x=-5

  def turn_right(self,evt): #改变球拍的移动速度向右每次5个像素
    self.x=5

#创建框架并且命名和固定,然后创建该框架的画布
tk=Tk() #创建框架对象tk
tk.title('Game')  #框架对象tk显示的名字为'game'
tk.resizable(0,0)  #固定框架
tk.wm_attributes('-topmost',1) #显示在最外层
canvas=Canvas(tk,width=500,height=400,bd=0,highlightthickness=0) #创建画布canvas,属于tk框架对象,
canvas.pack() #显示画布的变化
tk.update()  #显示框架的变化

#把类赋值给对象ball,如果调用了ball就可以实现该类的作用
paddle=Paddle(canvas,"blue") #调用拍的类给对象paddle用
ball=Ball(canvas,paddle,'green') #调用球的类给对象ball用

while True:  #要注意while语句以防止死循环,先设置为真
  if ball.hit_bottom==False: #没有碰到底部的话执行下面的语句
    ball.draw()  #调用ball对象的函数draw()
    paddle.draw()#调用paddle对象的函数draw()
    tk.update_idletasks()
    tk.update()  #更新框架
    time.sleep(0.01) #睡眠0.01秒
  elif ball.hit_bottom==True: #要是小球接触了底部
    canvas.create_text(200,100,text='Aha,you lose it,\nHow about try again?',font=('Times',22)) #在(200,100)坐标处创建文本‘...',字号22号
    tk.update() #更新内容

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

(0)

相关推荐

  • Python解决抛小球问题 求小球下落经历的距离之和示例

    本文实例讲述了Python解决抛小球问题 求小球下落经历的距离之和.分享给大家供大家参考,具体如下: 问题: 小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果 测试样例: 100,90,80,70 返回:1020 实现代码: class Balls: def calcDistance(s

  • python3实现小球转动抽奖小游戏

    最近老师在讲 tkinter,所以我做了一个抽奖小游戏. 一.效果图 先上效果图.红色的小球会围绕蓝色小球做环形运动.我设置的四个角是奖品,其余的都是再接再厉. 二.方法 基于tkinter中的button,text,PIL ,time.Canvas drawPath():用于画蓝色的小球 Ball类 初始化画布.运动小球大小.运动的起点. ball类->draw() 控制小球的运动.这里用到一个方法叫canvas.coords.这个方法可以获取运动小球当前在画布上的坐标.并返回一个数组.比如

  • python开发的小球完全弹性碰撞游戏代码

    完成这个小球的完全弹性碰撞游戏灵感来自于: 下面是我花了一周下班时间所编写的一个小球完全弹性碰撞游戏: 游戏初始化状态: 最下面的游标和修改小球的移动速度 源码部分: 复制代码 代码如下: #python tkinter#python version 3.3.2 from tkinter import * '''    判断    两个小球    {        圆心:A(x1,y1)  半径:r  X轴速度:Vax  Y轴速度:Vay        圆心:B(x2,y2)  半径:R  X轴

  • python3.6使用tkinter实现弹跳小球游戏

    本文实例为大家分享了python3.6实现弹跳小球游戏的具体代码,供大家参考,具体内容如下 import random import time from tkinter import * #下面定义一个球的类,有canvas和color两个对象 class Ball: #定义一个Ball类的函数 def __init__(self,canvas,paddle,color):#这是Ball类的属性函数,Ball类下的函数都有这些性质 self.canvas=canvas self.paddle=p

  • python3.3使用tkinter开发猜数字游戏示例

    利用这个小游戏可以学习一下ython3.3中tkinter的使用方法 复制代码 代码如下: # -*- coding: utf-8 -*-import tkinter as tkimport sysimport randomimport re number = random.randint(0,1024)running = Truenum = 0nmaxn = 1024nminn = 0 def eBtnClose(event):    root.destroy() def eBtnGuess(

  • Android游戏开发学习①弹跳小球实现方法

    本文实例讲述了Android游戏开发学习①弹跳小球实现方法.分享给大家供大家参考.具体如下: 在学习了一点点Android之后,觉得有必要记录下来,于是就开了这个新坑,慢慢来填吧. 1.运动体Movable类 本例主要模拟了一组大小不一的球以一定的水平初速度从高处落下的运动轨迹.其中的小球为一个可移动物体Movable对象,该类中除了包含小球图片对象之外,还包括了如位置坐标.水平速度.垂直速度等一系列用于模拟小球运动的成员变量和一些方法. Movable类: package com.ball;

  • python3 pygame实现接小球游戏

    本文实例为大家分享了python3 pygame接小球游戏的具体代码,供大家参考,具体内容如下 操作方法:鼠标操作 截图: 直接放代码: # -*- coding:utf-8 -*- import sys,pygame,random #导入库 from pygame.locals import * def print_text(font,x,y,text,color=(255,255,255)): imgText = font.render(text,True,color) # 创建字体,三个参

  • c语言小游戏程序之弹跳小球的实现代码

    现在说一下其中一个最简单的小程序:弹跳小球 ---------------LINE---------------- 首先我们知道,在窗口的坐标系原点是在窗口左上角的,如图所示 然后我们如果想在这个坐标系里面的某个点上画出一个小球,那么它的坐标系应该就是这样的 转换到c语言的思维的话:X0既是打印出X0个"\n",Y0既是打印出Y0个空格!!!! SO 代码如下 #include <stdio.h> #include <stdlib.h> int main() {

  • python实现弹跳小球

    前言 学习Python的过程中,比较喜欢通过实际的小项目进行巩固学习,决定写一个弹跳小球的程序.这个实战例程是在公众号上看到的,他的编写过程比较完整,步骤清晰,贴的代码并不完整,但是我还是决定尝试一下,在尝试的过程中由于自己的基础知识并没有学到类这里,所以是在摸索的阶段,一边学习基础知识,一边编写这个例程,最终还是把它给完成了,虽然后面在网上看到了代码,幸好没有提前看到,这一天中我还是学习到了很多. 创建窗口 from tkinter import Tk import tkinter impor

  • C语言实现简单弹跳球游戏

    本文实例为大家分享了C语言实现弹跳球游戏的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> int main() { // 球的坐标 int pos_x,pos_y; //球坐标的变化 int x =0; int y = 5; // 定义一个球的速度 int velocity_x=1; int velocity_y=1; //定义一个球运动的范围 int top=0; int botton=20; int lift=0

  • C语言基于EasyX库实现有颜色弹跳小球

    本文实例为大家分享了基于EasyX库实现有颜色弹跳小球的具体代码,供大家参考,具体内容如下 1.目标要求 1.实现一个有颜色小球在窗口中弹跳2.遇到边界弹跳 2.C语言代码 #include<graphics.h>  #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<conio.h> #define High 480 #define Width 640//画布尺寸

  • C语言实现简单弹跳小球

    本文实例为大家分享了C语言实现简单弹跳小球的具体代码,供大家参考,具体内容如下 本节利用 printf 函数 实现一个在屏幕上弹跳的小球,内容简单容易入门,这也是以后我们在设计更多游戏中可能用到的东西. 绘制静止的小球 我们将以如图坐标系进行游戏,即以窗口左上角为原点. 我们希望在坐标(x , y)处显示静止的小球: #include <stdio.h> int main(){     int i,j; // 这两个量是循环中要使用的,一定先声明     int x = 5;     int

  • C语言实现弹跳小球动画

    目录 一.项目描述和最终成果展示 二.实现一个移动的球 三.弹跳一个小球 四.弹跳一个小球(改进版) 五.多个球碰撞 六.多个球碰撞(升级版) 本文实例为大家分享了C语言实现弹跳小球动画的具体代码,供大家参考,具体内容如下 一.项目描述和最终成果展示 项目描述:  一个球来回的跳动 效果图如下: 二.实现一个移动的球 代码如下: #include<graphics.h> #include<conio.h> int main(void) {     int x;     initgr

随机推荐