【汇智学堂】-python小游戏(弹球游戏之六-类的使用中体会坐标位置)
3.6类的使用中体会坐标位置
现在我们应用类来将函数封装起来。当程序运行时,我们体会一下坐标位置。下面是我们要做的事情:
1、建两个类,一个类用来存球板相关的函数与变量,另一个类用来存球相关的函数与变量。
2、运行程序中体会球、球板坐标的位置。
实现代码如下:
class racket:def __init__(self,canvas,color,ball):self.canvas=canvasself.x=0 self.id=canvas.create_rectangle(400, 600, 500, 620, fill =color)self.canvas.bind_all('<KeyPress-Left>', self.turn_left)self.canvas.bind_all('<KeyPress-Right>', self.turn_right)self.ball=ball def turn_left(self,evt):self.x=-5 def turn_right(self, evt):self.x = 5def draw(self):#tkinter.messagebox.showinfo('提示',self.x)pos2=self.ball.canvas.coords(self.ball.id) pos = self.canvas.coords(self.id)if pos[0] <= 0: self.x = 0if pos[0]>=700:self.x=0self.canvas.move(self.id,self.x, 0)if pos2[3]>=pos[1]:tkinter.messagebox.showinfo('提示',"球的位置在球拍下侧")else:tkinter.messagebox.showinfo('提示',"球的位置在球拍上侧")class ball:def __init__(self,canvas,color): self.canvas=canvas self.a=random.randint(50,600)self.b=random.randint(50,200)'''self.a=random.randint(600,700)self.b=random.randint(600,700)''' self.id=canvas.create_oval(self.a, self.b, self.a+20, self.b+20, fill =color)#self.racket=racketdef draw(self):position=canvas.coords(self.id)if position[3]<800: self.canvas.move(1,0,5)else:canvas.create_text(400,420,text="游戏结束",fill='red',font=('Times',110))ball=ball(canvas,'red')
racket=racket(canvas,'green',ball)
racket.draw()
ball.draw()
类的使用,属于面向对象编程的内容。建议基础知识弱些的读者,对照基础的书,加深理解。
将代码整合起来,整合后完整代码如下:
#-*- coding:GBK -*-from tkinter import *
import time
import random
import tkinter.messagebox #messageboxcloseornot=1
position=[1,1,1,1]tk = Tk()
tk.title("雷雷的弹球游戏")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=800, height=800, bd=0, highlightthickness=0)
canvas.pack()
tk.update()class racket:def __init__(self,canvas,color,ball):self.canvas=canvasself.x=0 self.id=canvas.create_rectangle(400, 600, 500, 620, fill =color)self.canvas.bind_all('<KeyPress-Left>', self.turn_left)self.canvas.bind_all('<KeyPress-Right>', self.turn_right)self.ball=ball def turn_left(self,evt):self.x=-5 def turn_right(self, evt):self.x = 5 def draw(self):#tkinter.messagebox.showinfo('提示',self.x)pos2=self.ball.canvas.coords(self.ball.id) pos = self.canvas.coords(self.id)if pos[0] <= 0: self.x = 0if pos[0]>=700:self.x=0self.canvas.move(self.id,self.x, 0)if pos2[3]>=pos[1]:tkinter.messagebox.showinfo('提示',"123")else:tkinter.messagebox.showinfo('提示',"234")
class ball:def __init__(self,canvas,color): self.canvas=canvas self.a=random.randint(50,600)self.b=random.randint(50,200)'''self.a=random.randint(600,700)self.b=random.randint(600,700)''' self.id=canvas.create_oval(self.a, self.b, self.a+20, self.b+20, fill =color)#self.racket=racketdef draw(self):position=canvas.coords(self.id)if position[3]<800: self.canvas.move(1,0,5)else:canvas.create_text(400,420,text="游戏结束",fill='red',font=('Times',110))ball=ball(canvas,'red')
racket=racket(canvas,'green',ball)
racket.draw()
ball.draw()
运行这段代码,当生成的球在球板的不同位置时,分别有提示。见图3-17、3-18
图3-17
图3-18
【汇智学堂】-python小游戏(弹球游戏之六-类的使用中体会坐标位置)相关推荐
- 【汇智学堂】-python小游戏(弹球游戏之二)
csdn学院网课地址:https://edu.csdn.net/course/detail/28236 3.2创建游戏的场景 游戏场景中包括:画布.球和球板. 创建的代码如下 #-*- coding: ...
- 【汇智学堂】-python系列小游戏开发准备工作
第一章:准备工作 游戏开发是程序开发的一种.程序就是指令,让计算机明白要做什么的指令.编写指令,让计算机能够显示游戏界面,角色,与我们参与者交互,就是我们要学习的内容.编写游戏有很多种语言工具,pyt ...
- 【汇智学堂】-python小游戏(太空阻击之一-浅谈游戏开发)
第五章:太空阻击 本章将通过一个太空射击游戏实例来介绍python中pygame的基本使用方法,包括创建游戏体,键盘.鼠标操作,基本的物理碰撞.UI显示和逻辑处理等. 5.1浅谈游戏开发 游戏开发是一 ...
- 【汇智学堂】JAVA多线程实现的小游戏-弹球-1
/*** 定义界面*/package com.huizhi;import javax.swing.*; import java.awt.*;public class Ui extends JFrame ...
- 【汇智学堂】-JS菜鸟版过河小游戏(之十---精简代码,完整版)
游戏简介: 这是一款很有难度的解谜小游戏.游戏中,一家六口,包括爸爸,妈妈,两个女儿以及两个孩子,以及一个警察.一个逃犯,这8个人都是准备要过河的. 但游戏的规则是无论成人和小孩过河,每次都只能是两个 ...
- 【汇智学堂】-JS菜鸟版过河小游戏(之一---角色入场)
游戏简介: 这是一款很有难度的解谜小游戏.游戏中,一家六口,包括爸爸,妈妈,两个女儿以及两个孩子,以及一个警察抓着一个逃犯,这8个人都是准备要过河的. 但游戏的规则是只有爸爸,妈妈以及警察能控制舢板. ...
- 【汇智学堂】-JS菜鸟版过河小游戏(之五---开船前的控制)
游戏简介: 这是一款很有难度的解谜小游戏.游戏中,一家六口,包括爸爸,妈妈,两个女儿以及两个孩子,以及一个警察.一个逃犯,这8个人都是准备要过河的. 但游戏的规则是无论成人和小孩过河,每次都只能是两个 ...
- 【汇智学堂】-JS菜鸟版过河小游戏(之四---全部角色左侧上船与左侧下船)
界面代码 <!-- 游戏简介: 这是一款很有难度的解谜小游戏.游戏中,一家六口,包括爸爸,妈妈,两个女儿以及两个孩子,以及一个警察抓着一个逃犯,这8个人都是准备 要过河的.但游戏的规则是只有爸爸 ...
- python编写一个弹球游戏_python pygame实现挡板弹球游戏
学了一天pygame,用python和pygame写一个简单的挡板弹球游戏 GitHub: # -*- coding:utf-8 -*- from sys import exit import pyg ...
最新文章
- Unsupported major.minor version (jdk版本错误)解决方案
- 探索Android中的Parcel机制(上)
- 《税的真相》—— 读后总结
- 日期相减 python_如果将excel的数字转化为日期(高级教程)
- angularjs学习笔记—工具方法
- 第十五期:详解Java集合框架,让你全面掌握!
- Android textedit 背景,Android EditText 的使用及值得注意的地方
- c语言数据类型、运算符和表达式
- LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
- Tomcat servers.xml 无注释版
- MySQL数据库数据存放位置修改
- 智力问答选择题_智力问答题
- xp无法远程计算机共享,解决XP局域网共享不能访问的问题
- CATIA软件常见问题解答
- 如何查看自己的qq邮箱服务器地址,怎么看自己设置的qq邮箱帐号
- 一步教你如何开通支付宝手机网站支付,微信h5收款,降低支付宝当面付费率
- 《八扇屏》贯口全本(共22番)
- 查看oracle的SID
- Pytorch为什么总要设置随机种子
- 账号密码登录和注册业务逻辑
热门文章
- Makefile 条件判断(多条件,或条件)
- 2022年中级会计中级经济法考试仿真模拟题答案
- 如何在VS2012 C++项目里面添加静态库文件lib
- 编程对小学生重要吗?看完小学生机器人编程学习线路图就知道了
- android仿陌陌tab,uniapp直播室|仿抖音视频|nvue+uniapp高仿陌陌直播
- 京东页面抢购倒计时,两小时一波
- 《动手学深度学习》参考答案(第二版)-第二章
- c语言五子棋源代码vc6,五子棋源码实验报告及人机对战说明.docx
- centos 7安装 firefox 教程
- NLP必读圣经《自然语言处理综述》2020最新版免费分享