IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 《Pygame游戏编程入门》学习——第1章 使用类的Python -> 正文阅读

[Python知识库]《Pygame游戏编程入门》学习——第1章 使用类的Python


前言

这是第2次学习《Pygame游戏编程入门》1这本书了,学习过程中的心得体会在这里记录一下。

第1章 挑战

问题1. 打开GeometryDemo.py程序,并且创建一个继承自Point的新类,名为Ellipse。它有一个水平半径和垂直半径,而不是像Circle那样只有一个半径。

  • 要点:
  • python中如何使用圆周率常量?答:import mathmath.pi
  • python中如何使浮点数字保留2位小数?答:round( number, num_of_digits )

思路:首先创建Point类,表示一个点,包含两个参数xy,表示该点的坐标。然后创建Ellipse类,表示一个椭圆,包含椭圆中心坐标xy,长半轴a和短半轴b。最后,在实例化两个类之后,利用to_string()方法打印点对象和椭圆对象的信息。

1.py代码如下:

import math

class Point():
    def __init__( self, x, y ):
        self.x = x
        self.y = y

    def to_string( self ):
        return '坐标:({}, {})'.format( self.x, self.y )

class Ellipse( Point ):
    def __init__( self, x, y, a, b ):
        super().__init__( x, y )
        self.a = a    # 长半轴a
        self.b = b    # 短半轴b

    def to_string( self ):
        return '{} [ a = {}, b = {}, 周长 = {},面积 = {} ]'.format( super().to_string(), self.a, self.b, self.get_circumference(), self.get_area() )

    def get_circumference( self ):
        return round( 2 * math.pi * self.b + 4 * ( self.a - self.b ), 4 )

    def get_area( self ):
        return round( math.pi * self.a * self.b, 4 )
        
p = Point( 10, 10 )
e = Ellipse( 100, 100, 20, 5 )
print( p.to_string() )
print( e.to_string() )

运行结果:

python 1.py 
坐标:(10, 10)
坐标:(100, 100) [ a = 20, b = 5, 周长 = 91.4159,面积 = 314.1593 ]

问题2. 给Rectangle类添加一个名为CalcArea()的方法,它返回Rectangle的面积。计算公式是:Area = Width * Height。测试该方法以确保它能工作。

思路:沿用上一题Point类,表示一个点,包含两个参数xy,表示该点的坐标。然后创建Size类,表示尺寸,包含宽w和高h。然后创建Rectangle类,表示一个矩形,包含矩形中心点的坐标(继承自Point),和矩形的尺寸(继承自Size)。最后,实例化3个类,利用to_string()方法打印各个对象的信息。

2.py代码如下:

class Point():
    def __init__( self, x, y ):
        self.x = x
        self.y = y

    def to_string( self ):
        return '坐标:( {}, {} )'.format( self.x, self.y )
 
class Size():
    def __init__( self, w, h ):
        self.w = w # 宽
        self.h = h # 高
    
    def to_string( self ):
        return '[ 宽 = {}, 高 = {} ]'.format( self.w, self.h )

class Rectangle( Point, Size ):
    def __init__( self, x, y, w, h ):
        Point.__init__( self, x, y )
        Size.__init__( self, w, h )
    
    def to_string(self):
        return Point.to_string( self ) + ', ' + Size.to_string( self )

    def get_circumference(self):
        return ( self.w + self.h ) * 2

    def get_area(self): # CalcArea()
        return self.w * self.h
        
p = Point( 1, 1 )
s = Size( 5, 2 )
r = Rectangle( 2, 2, 10, 3 )

print( p.to_string() )
print( s.to_string() )
print( r.to_string() )

运行结果:

python 2.py 
坐标:( 1, 1 )
[= 5, 高 = 2 ]
坐标:( 2, 2 ), [= 10, 高 = 3 ]

问题3. 给Circle类添加一个名为CalcCircum()的方法,它返回圆的周长。计算公式是:Circumference = 2 * Pi * Radius (Pi = 3.14159)。测试该方法以确保它能工作。

思路:沿用上一题的Point类。然后创建Circle类,表示一个圆,参数包含圆心坐标(继承自Point)和半径r。然后,在该类中添加两个方法,分别计算圆周长和面积,并在打印时调用。最后,实例化2个类,利用to_string()方法打印各个对象的信息。

3.py代码如下:

import math

class Point():
    def __init__( self, x, y ):
        self.x = x
        self.y = y

    def to_string( self ):
        return '坐标:( {}, {} )'.format( self.x, self.y )

class Circle( Point ):
    def __init__( self, x, y, r ):
        super().__init__( x, y )
        self.r = r

    def to_string( self ):
        return '{} [ 半径 = {},周长 = {},面积 = {} ]'.format( super().to_string(), self.r, self.get_circumference(), self.get_area() )

    def get_circumference( self ): # CalcCircum()
        return round( 2 * math.pi * self.r, 4 )

    def get_area( self ):
        return round( math.pi * self.r * self.r, 4 )
        
p = Point( 10, 10 )
c = Circle( 100, 100, 20 )
print( p.to_string() )
print( c.to_string() )

运行结果:

python 3.py 
坐标:( 10, 10 )
坐标:( 100, 100 ) [ 半径 = 20,周长 = 125.6637,面积 = 1256.6371 ]

  1. [美] Jonathan S. Harbour 著,李强 译,Python游戏编程入门,人民邮电出版社,2015.1 ??

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:24:34  更:2022-09-21 00:27:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:44:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码