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小游戏(弹球游戏之六-类的使用中体会坐标位置)相关推荐

  1. 【汇智学堂】-python小游戏(弹球游戏之二)

    csdn学院网课地址:https://edu.csdn.net/course/detail/28236 3.2创建游戏的场景 游戏场景中包括:画布.球和球板. 创建的代码如下 #-*- coding: ...

  2. 【汇智学堂】-python系列小游戏开发准备工作

    第一章:准备工作 游戏开发是程序开发的一种.程序就是指令,让计算机明白要做什么的指令.编写指令,让计算机能够显示游戏界面,角色,与我们参与者交互,就是我们要学习的内容.编写游戏有很多种语言工具,pyt ...

  3. 【汇智学堂】-python小游戏(太空阻击之一-浅谈游戏开发)

    第五章:太空阻击 本章将通过一个太空射击游戏实例来介绍python中pygame的基本使用方法,包括创建游戏体,键盘.鼠标操作,基本的物理碰撞.UI显示和逻辑处理等. 5.1浅谈游戏开发 游戏开发是一 ...

  4. 【汇智学堂】JAVA多线程实现的小游戏-弹球-1

    /*** 定义界面*/package com.huizhi;import javax.swing.*; import java.awt.*;public class Ui extends JFrame ...

  5. 【汇智学堂】-JS菜鸟版过河小游戏(之十---精简代码,完整版)

    游戏简介: 这是一款很有难度的解谜小游戏.游戏中,一家六口,包括爸爸,妈妈,两个女儿以及两个孩子,以及一个警察.一个逃犯,这8个人都是准备要过河的. 但游戏的规则是无论成人和小孩过河,每次都只能是两个 ...

  6. 【汇智学堂】-JS菜鸟版过河小游戏(之一---角色入场)

    游戏简介: 这是一款很有难度的解谜小游戏.游戏中,一家六口,包括爸爸,妈妈,两个女儿以及两个孩子,以及一个警察抓着一个逃犯,这8个人都是准备要过河的. 但游戏的规则是只有爸爸,妈妈以及警察能控制舢板. ...

  7. 【汇智学堂】-JS菜鸟版过河小游戏(之五---开船前的控制)

    游戏简介: 这是一款很有难度的解谜小游戏.游戏中,一家六口,包括爸爸,妈妈,两个女儿以及两个孩子,以及一个警察.一个逃犯,这8个人都是准备要过河的. 但游戏的规则是无论成人和小孩过河,每次都只能是两个 ...

  8. 【汇智学堂】-JS菜鸟版过河小游戏(之四---全部角色左侧上船与左侧下船)

    界面代码 <!-- 游戏简介: 这是一款很有难度的解谜小游戏.游戏中,一家六口,包括爸爸,妈妈,两个女儿以及两个孩子,以及一个警察抓着一个逃犯,这8个人都是准备 要过河的.但游戏的规则是只有爸爸 ...

  9. python编写一个弹球游戏_python pygame实现挡板弹球游戏

    学了一天pygame,用python和pygame写一个简单的挡板弹球游戏 GitHub: # -*- coding:utf-8 -*- from sys import exit import pyg ...

最新文章

  1. Unsupported major.minor version (jdk版本错误)解决方案
  2. 探索Android中的Parcel机制(上)
  3. 《税的真相》—— 读后总结
  4. 日期相减 python_如果将excel的数字转化为日期(高级教程)
  5. angularjs学习笔记—工具方法
  6. 第十五期:详解Java集合框架,让你全面掌握!
  7. Android textedit 背景,Android EditText 的使用及值得注意的地方
  8. c语言数据类型、运算符和表达式
  9. LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
  10. Tomcat servers.xml 无注释版
  11. MySQL数据库数据存放位置修改
  12. 智力问答选择题_智力问答题
  13. xp无法远程计算机共享,解决XP局域网共享不能访问的问题
  14. CATIA软件常见问题解答
  15. 如何查看自己的qq邮箱服务器地址,怎么看自己设置的qq邮箱帐号
  16. 一步教你如何开通支付宝手机网站支付,微信h5收款,降低支付宝当面付费率
  17. 《八扇屏》贯口全本(共22番)
  18. 查看oracle的SID
  19. Pytorch为什么总要设置随机种子
  20. 账号密码登录和注册业务逻辑

热门文章

  1. Makefile 条件判断(多条件,或条件)
  2. 2022年中级会计中级经济法考试仿真模拟题答案
  3. 如何在VS2012 C++项目里面添加静态库文件lib
  4. 编程对小学生重要吗?看完小学生机器人编程学习线路图就知道了
  5. android仿陌陌tab,uniapp直播室|仿抖音视频|nvue+uniapp高仿陌陌直播
  6. 京东页面抢购倒计时,两小时一波
  7. 《动手学深度学习》参考答案(第二版)-第二章
  8. c语言五子棋源代码vc6,五子棋源码实验报告及人机对战说明.docx
  9. centos 7安装 firefox 教程
  10. NLP必读圣经《自然语言处理综述》2020最新版免费分享