Python 练习项目1 弹球游戏
这几天学习了python的基础知识,然后参考了网上的一些资料,完成了一个自己的小游戏,弹球游戏比较简单,但却具备了一些游戏的普遍特征,对于初学者是一个比较合适的锻炼的项目。
下面是效果图:

完整程序:
# python learningpython.py
# python learningpython.py
import tkinter #引入GUI工具包
import random #引入随机函数
import time #引入定时器 #创建一个界面和配置界面的一些基本属性
tk = tkinter.Tk()
tk.title('Game')
tk.resizable(0, 0) #表示不能被拉伸
tk.wm_attributes('-topmost', 1) #通知管理器调整布局大小
canvas = tkinter.Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
canvas.pack() #使能器件
tk.update() #更新界面 game_startsigal_text=canvas.create_text(430,10,text='DOWN:START',font=('Times',10),state='hidden')
game_endsigal_text=canvas.create_text(430,30,text='UP:END',font=('Times',10),state='hidden')
game_leftsigal_text=canvas.create_text(430,50,text='LEFT:LEFT',font=('Times',10),state='hidden')
game_rightsigal_text=canvas.create_text(430,70,text='RIGHT:RIGHT',font=('Times',10),state='hidden') game_over_text=canvas.create_text(250,200,text='GAME OVER',font=('Times',30),state='hidden')
game_start_text=canvas.create_text(430,110,text='GAME START',font=('Times',10),state='hidden')
game_score_text=canvas.create_text(430,90,text='SCORE:',font=('Times',10),state='hidden') #定义木板类
class Paddle:
def __init__(self,canvas,color): #初始化
self.canvas=canvas
self.id=canvas.create_rectangle(0,0,150,10,fill=color)
self.canvas.move(self.id,150,380)
self.started=False
self.x=0
self.canvas_width=self.canvas.winfo_width()
self.canvas.bind_all("<KeyPress-Left>",self.turn_left)
self.canvas.bind_all("<KeyPress-Right>",self.turn_right)
self.canvas.bind_all("<KeyPress-Down>", self.game_start)
self.canvas.bind_all("<KeyPress-Up>", self.game_stop)
def turn_left(self,evt): #左转
self.x=-4
def turn_right(self,evt): #右转
self.x=4
def game_start(self,evt): #开始
self.started=True
def game_stop(self,evt): #停止
self.started = 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
if pos[2]>=500:
self.x=0
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,1,2,3]
random.shuffle(starts)
self.x=starts[0]
self.y=-3
self.canvas_height=self.canvas.winfo_height()
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[3]>=self.canvas_height:
self.hit_bottom=True
if self.hit_paddle(pos)==True:
self.y=-3
score.addscore()
if pos[0]<=0:
self.x+=1
if pos[1]<=0:
self.y=1
if pos[2]>=500:
self.x-=1
if pos[3]>=self.canvas_height:
self.y=-1 class Score:
def __init__(self,canvas,color):
self.score=0;
self.canvas=canvas
canvas.itemconfig(game_score_text, state='normal')
self.id=canvas.create_text(470,90,text=self.score,fill=color) canvas.itemconfig(game_startsigal_text, state='normal')
canvas.itemconfig(game_endsigal_text, state='normal')
canvas.itemconfig(game_leftsigal_text, state='normal')
canvas.itemconfig(game_rightsigal_text, state='normal')
def addscore(self):
self.score+=1
self.canvas.itemconfig(self.id,text=self.score) paddle=Paddle(canvas,'blue')
ball=Ball(canvas,paddle,'red')
score=Score(canvas,'black') while 1:
if ball.hit_bottom==False and paddle.started==True:
ball.draw()
paddle.draw()
canvas.itemconfig(game_start_text, state='normal')
if ball.hit_bottom==True:
canvas.itemconfig(game_over_text, state='normal')
canvas.itemconfig(game_start_text, state='hidden')
tk.update_idletasks()
tk.update()
time.sleep(0.01) 欢迎交流!
Python 练习项目1 弹球游戏的更多相关文章
- Python开发项目:大型模拟战争游戏(外星人入侵)
外星人入侵 游戏概述: 现在准备用python开始搞一个大型游戏,模拟未来战争,地球人狙击外星人大战(其实就是小蜜蜂游戏2333),玩家控制一个飞船,用子弹歼灭屏幕上空的外星飞船:项目用到了Pygam ...
- 通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile
通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁 ...
- 通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数
通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账 ...
- 通过游戏学python 3.6 第一季 第二章 实例项目 猜数字游戏--核心代码--猜测次数 可复制直接使用 娱乐 可封装 函数
猜数字游戏--核心代码--猜测次数 #猜数字--核心代码--猜测次数 number=33 amount=3 count=0 while count<=amount: conversion ...
- 初识python:tkinter 实现 弹球小游戏(面向对象)
使用蹩脚式面相对象,实现弹球小游戏(非面向对象实现,主要介绍tk基础用法). #!/user/bin env python # author:Simple-Sir # time:2020/8/7 10 ...
- 初识python:tkinter 实现 弹球小游戏(非面相对象)
通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...
- python实战===2017年30个惊艳的Python开源项目 (转)
本文转自:http://www.sohu.com/a/216723120_115128 摘要:本文来自Mybridge,介绍了过去一年里30个惊艳的Python开源项目.点击每一个都可以在GitHub ...
- python实战项目
没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用到实际开发中更是不得而知了! 以上就是我们在学习过程中必须要有项目实战开发经验的原因,其实无论项 ...
- 【年度盘点】10个热门Python练习项目
这10个项目,约有270000人学习过. 今天给大家盘点一下实验楼最热门的10个Python练习项目.第二名是<200 行 Python 代码实现 2048>,第三名是<Python ...
随机推荐
- springMvc 中返回字符串 乱码解决
/** * produces=MediaType.APPLICATION_JSON_VALUE+";charset=utf-8" 乱码解决 * @param callback * ...
- Java中的RSA加解密工具类:RSAUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.utils.log.LogUtils; ...
- redis cluster 部署过程
一, 特点 高性能: 1.在多分片节点中,将16384个槽位,均匀分布到多个分片节点中 2.存数据时,将key做crc16(key),然后和16384进行取模,得出槽位值(0-16383之间) 3.根 ...
- docker安装mongo初体验
1.docker安装在此不做介绍,请自行百度:个人环境是在windows下运行cmd执行docker命令2.打算在docker下安装使用mongo,顺带熟悉docker,拉开篇章3.docker下安装 ...
- html5实现判断拍照旋转角度等功能
https://www.aliyun.com/jiaocheng/857189.html base64图片编码上传,判断图片是否有旋转,若有旋转修正图片并保存至阿里 http://code.c ...
- (转)浅谈 Linux 系统中的 SNMP Trap
原文:https://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前, ...
- selenium+Python(浏览器操作)
1 .浏览器最大化我们知道调用启动的浏览器不是全屏的,这样不会影响脚本的执行,但是有时候会影响我们“观看”脚本的执行. #coding=utf-8 from selenium import webdr ...
- android去除标题栏
在 AndroidManifast.xml 文件中 将 theme="@style/AppTheme" 改为 theme="@style/Theme.AppCompat. ...
- Hibernate项目环境搭建
1.首先在eclipse里面新建一个Java工程. 2.在数据库中新建一个数据库(无需创建表,有Hibernate生成). 3.在项目中导入Hibernate所依赖的jar包,该jar包可以在此下载: ...
- php 命名空间与文件引入
问题描述:这两天试着自己写一些东西,也是为了复习一下忘了的PHP基础知识,但是写到命名空间的时候遇到了一点问题,在这记录一下:当我写好文件之后,添加了命名空间,结果一直提示命名空间下类不存在,一直以为 ...