Python软件开发之单纯小流程示例

11迷你游戏-颤动的陀螺

一、工程项目机能

使用者掌控隔板来抵挡颤动的陀螺。

二、Beine

依照工程项目机能自订三个类,三个用作掌控陀螺在控件中的体育运动,三个用作转交使用者挪动以内键时,隔板在控件中的体育运动。在掌控陀螺的类中,他们还须要考量当陀螺上升时,遇到隔板时的边线推论。

三、流程源码

源码部份截屏:

Java软件开发之单纯小流程示例(11)迷你游戏-颤动的陀螺插图

源码:

!/usr/bin/python3.6

-*- coding: GBK -*-

导入相应模块

from tkinter import *

import random

import time

自订陀螺的类 Ball

class Ball:

初始化

def __init__(self,canvas,paddle,color):

传递画布值

self.canvas=canvas

传递隔板值

self.paddle=paddle

画圆并且保存其ID

self.id=canvas.create_oval(10,10,25,25,fill=color)

self.canvas.move(self.id,245,100)

陀螺的水平边线起始列表

start=[-3,-2,-1,1,2,3]

随机化边线列表

random.shuffle(start)

self.x=start[0]

self.y=-2

self.canvas_heigh=self.canvas.winfo_height()获取窗口高度并保存

self.canvas_width=self.canvas.winfo_width()

依照参数值绘制陀螺

def draw(self):

self.canvas.move(self.id,self.x,self.y)

pos=self.canvas.coords(self.id)返回相应ID代表的图形的当前坐标(左上角和右上角坐标)

使得陀螺不会超出窗口

pad=self.canvas.coords(self.paddle.id)获取陀螺隔板的坐标

if pos[1]<=0 :

self.y=2

if pos[3]>=self.canvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]<=pad[2]):

self.y=-2

if pos[0]<=0:

self.x=2

if pos[2]>=self.canvas_width:

self.x=-2

自订陀螺隔板的类 Paddle

class Paddle:

初始化

def __init__(self,canvas,color):

self.canvas=canvas

self.color=color

self.id=canvas.create_rectangle(0,0,100,20,fill=color)

self.canvas.move(self.id,200,300)

self.canvas_width=self.canvas.winfo_width()

self.l=0

self.r=0

依照参数值绘制隔板

def draw(self):

pos=self.canvas.coords(self.id)

if pos[0]<=0:

self.l=0

if pos[2]>=self.canvas_width:

self.r=0

向左

def turn_left(self,event):

self.canvas.move(self.id,self.l,0)

self.l=-20

向右

def turn_right(self,event):

self.canvas.move(self.id,self.r,0)

self.r=20

示例化控件

tk=Tk()

tk.title(颤动的陀螺)

设定窗口大小为不可调整

tk.resizable(0,0)

将包含画布的窗口放在上面

tk.wm_attributes(-topmost,1)

将显示边框的三个参数设置为0,即不显示边框

canvas=Canvas(tk,width=500,height=400,bd=0,highlightthickness=0)

canvas.pack()

tk.update()

示例化隔板

paddle=Paddle(canvas,red)

示例化陀螺

ball=Ball(canvas,paddle,green)

下面两行为绑定以内三个方向键

canvas.bind_all(,paddle.turn_left)

canvas.bind_all(,paddle.turn_right)

设定无限循环,调用陀螺和隔板函数绘制陀螺和隔板,并快速重画屏幕

while 1:

ball.draw()

paddle.draw()

tk.update_idletasks()

tk.update()

time.sleep(0.01)使用时间控件设定每0.01秒循环一次

四、代码解释

第4至第6行为导入相应的模块。

第8至39行为三个自订陀螺的类 Ball,在类中定义了三个自订函数__init__(第10至25行)和draw(第27至39行)。__init__函数用作陀螺的初始化,draw函数用作绘制陀螺在控件中的体育运动。

第42至66行为自订陀螺隔板的类Paddle。在类中定义四个自订函数:隔板初化函数__init__(第44至51行)、隔板以内界限掌控函数draw(第53至58行,当隔板向左达到小于等于0或大于等于控件宽度时,即到达控件左边框或右边框时,将隔板边线值重设为0.)、隔板向左移动掌控函数turn_left(第60至62行,每按一次向左键,隔板水平边线值x减少20。)、隔板向右移动掌控函数turn_right(第64至66行,每按一次向右键,隔板水平边线值x增加20。)

第68至85行为流程主体实现部份,主要实现控件、陀螺和隔板的示例化、各个参数的设置及类函数的调用。

第87至92行为设定三个无限循环,用作调用陀螺和隔板函数绘制陀螺和隔板,并快速重画屏幕,时间设定为0.01.

五、运行

图例1

Java软件开发之单纯小流程示例(11)迷你游戏-颤动的陀螺插图1

图例2

Java软件开发之单纯小流程示例(11)迷你游戏-颤动的陀螺插图2

下一篇:《Python软件开发之单纯小流程示例(12)》

更多精彩内容将在以后的章节分享给朋友们,请添加好友至收藏,欢迎点赞并关注后期内容更新!

举报/反馈

作者 nasiapp

在线客服
官方客服
我们将24小时内回复。
12:01
您好,有任何疑问请与我们联系!

选择聊天工具: