日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏

發(fā)布時(shí)間:2025/3/20 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文實(shí)例講述了Python基于Tkinter模塊實(shí)現(xiàn)的彈球小游戲。分享給大家供大家參考,具體如下:

#!usr/bin/python

#-*- coding:utf-8 -*-

from Tkinter import *

import Tkinter

import random

import time

#創(chuàng)建小球的類

class Ball:

def __init__(self,canvas,paddle,color): #參數(shù):畫布,球拍和顏色

self.canvas = canvas

self.paddle = paddle

self.id = canvas.create_oval(10,10,25,25,fill = color) #參數(shù):左上角坐標(biāo)(x1,y1),右下角坐標(biāo)(x2,y2),填充色

self.canvas.move(self.id,245,100) #把橢圓形移到畫布的中心(245,100)

starts = [-3,-2,-1,1,2,3] #用一個(gè)列表隨機(jī)一個(gè)小球的初始橫向 X 坐標(biāo)

random.shuffle(starts) #利用shuffle函數(shù)使starts列表混排一下,這樣starts[0]就是列表中的隨機(jī)值

self.x = starts[0] #所以X可能是以列表中的任意一個(gè)值開始的

self.y = -2 #初始的豎直方向運(yùn)動(dòng)的速度

self.canvas_height = self.canvas.winfo_height() #調(diào)用畫布上的winfo_height函數(shù)來獲取畫布當(dāng)前的高度

self.canvas_width = self.canvas.winfo_width() #保證小球不會(huì)從屏幕的兩邊消失,把畫布的寬度保存到一個(gè)新的對(duì)象變量canvas_width中

self.hit_bottom =False

def hit_paddle(self,pos): #包含小球的當(dāng)前坐標(biāo)

paddle_pos = self.canvas.coords(self.paddle.id) #得到拍子的坐標(biāo),并把它們放到變量paddle_pos中

#pos[2]包含了小球的右側(cè)X坐標(biāo),pos[0]包含了小球左側(cè)的X坐標(biāo)

if pos[2] >= paddle_pos[0] and pos[0] <=paddle_pos[2]: #如果小球的右側(cè)大于球拍的左側(cè),并且小球的左側(cè)小于球拍的右側(cè)

#pos[3]表示小球的底部(此處判斷小球的底部是否在球拍的頂部和底部之間,注:坐標(biāo)從上到下是逐漸變大的,零點(diǎn)在上面)

if pos[3] >=paddle_pos[1] and pos[3] <= paddle_pos[3]:#可以理解為,第一個(gè)if判斷和球拍的長那個(gè)面是否碰撞,第二個(gè)是側(cè)面

return True

return False

def draw(self):

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

pos = self.canvas.coords(self.id) #coords函數(shù)通過ID來返回當(dāng)前畫布上任何畫好的東西的當(dāng)前X和Y坐標(biāo)

if pos[1] <=0: #coords函數(shù)返回一個(gè)由四個(gè)數(shù)字組成的列表來表示坐標(biāo)(橢圓的左上角坐標(biāo)和右下角的)

self.y=2#判斷是否撞擊到頂面

if pos[3] >=self.canvas_height:#判斷小球是否撞到了屏幕的底部,如果小球一旦碰到了畫布的底端,游戲就結(jié)束了i

self.hit_bottom = True

print"你輸了!"

if self.hit_paddle(pos) == True: #hit_paddle()函數(shù)是用來判斷小球是否撞擊到球拍(如果撞到了就改變方向運(yùn)動(dòng)"-"代表反向,2代表速度)

self.y = -2

if pos[0] <=0:#最后兩個(gè)if判斷小球是否撞到了畫布的左側(cè)和右側(cè)

self.x = 2

if pos[2] >= self.canvas_width:

self.x = -2

#球拍類

class Paddle:

def __init__(self,canvas,color):

self.canvas = canvas

self.id = canvas.create_rectangle(0,0,100,10,fill = color) #創(chuàng)建一個(gè)長方形球拍

self.canvas.move(self.id,200,300)#把球拍的坐標(biāo)移到(200,300)橫向200像素,縱向300像素

self.x =0

self.canvas_width = self.canvas.winfo_width() #保存畫布寬度的變量

self.canvas.bind_all('',self.turn_left)#把turn_left()函數(shù)綁定到左方向鍵上

self.canvas.bind_all('',self.turn_right)#把turn_right()函數(shù)班規(guī)定到右方向鍵上

def draw(self):

self.canvas.move(self.id,self.x,0) #在x的方向上移動(dòng)球拍

pos =self.canvas.coords(self.id)#獲得球拍的坐標(biāo)

if pos[0] <=0:#如果球拍運(yùn)動(dòng)到左邊緣的時(shí)候,就讓球拍停止運(yùn)動(dòng),以下的elif道理相同

self.x = 0

elif pos[2] >= self.canvas_width:

self.x =0

def turn_left(self,evt): #移動(dòng)球拍向左

self.x =-2

def turn_right(self,evt):#向右

self.x =2

t = Tkinter.Tk()

t.title("www.jb51.net Game") #用t對(duì)象中的title函數(shù)給窗口加一個(gè)標(biāo)題,t對(duì)象是由t=Tk()創(chuàng)建的

t.resizable(0,0)#規(guī)定窗口不可調(diào),兩個(gè)參數(shù)0,0,表示在水平和豎直方向上都不可改變

t.wm_attributes("-topmost",1)#調(diào)用wm_attributes來告訴tkinter把包含我們畫布的窗口放到所有其他窗口之前(-topmost)

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

canvas.pack()#按前一行給出的寬度和高度的參數(shù)來調(diào)整自身大小

t.update()#做好初始化

paddle = Paddle(canvas,'blue')

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

while 1:

if ball.hit_bottom ==False:

ball.draw()

paddle.draw()

else:

break

t.update_idletasks()

t.update()#快速更新畫布

time.sleep(0.01)

t.mainloop()

本機(jī)測試結(jié)果如下:

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

總結(jié)

以上是生活随笔為你收集整理的python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。