python小球斜上抛的公式

python小球斜上抛的公式,第1张

竖直向上的分速度:vosinθ

竖直向上的分运动的时间:t=vosinθ/g

竖直向枣则袭下的分运动的时间:t=vosinθ/g

所以总时间为:凳兄t总=2t=2vosinθ/盯岁g

水平的分速度为:vocosθ

水平的位移:x=vocosθ*t总=vocosθ*2vosinθ/g=(2sinθcosθ)vo^2/g=sin(2θ)vo^2/g

Python程序开发之简单小程序实例

(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]=self.canvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]

用python  tkinter模块做一个击打反d球和球拍的游戏。球在屏幕上飞,玩家需要把它击打回去,只要球落到屏幕底部,游戏就结束。

首先我们做一个在屏幕上到处移动的小球:

#coding:utf-8

from tkinter import *

import random

import time

class Ball:

    #创建一个球类

    def __init__(self, canvas, color):

        self.canvas = 袜蚂滑canvas

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

        #返回刚好划小球的id,create_oval创建一个椭圆

        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()

        #获取画布当前宽度

    def draw(self):

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

        #让小球水平和垂直移动

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

        #coords返回画布上画好的x和y坐标

        #判断小球是否撞到画布顶部或者底部,保证小球反d回去,不消失

        告腊if pos[1] <= 0:

            self.y = 3

        if pos[3] >= self.canvas_height:

            self.y = -3

        if pos[0] 物缓<= 0:

            self.x = 3

        if pos[2] >= self.canvas_width:

            self.x = -3

tk = Tk()

tk.title("Game")

tk.resizable(0, 0)

#窗口大小不可调整

tk.wm_attributes("-topmost", 1)

#使画布窗口置于所有窗口之前

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

#bd和highlighttthickness是为了保证画布没有边框

canvas.pack()

tk.update()

#动画初始化

ball = Ball(canvas, 'red')

while 1:

    #画布一出现会马上消失,为了防止画布消失,用tkinter一直重画

    ball.draw()

    tk.update_idletasks()

    tk.update()

    time.sleep(0.01)

一个会动的小球就做好啦

效果图如下,只是它会动<( ̄3 ̄)>!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12491356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存