主要是面向对象的方法,通过三个例子进行
第一个是:计算分数的加减乘除

from math import gcd
class Fraction(object):def __init__(self, num, den):if den == 0:raise ValueError('分母不能为0')self._num = numself._den = denself.normalize()   ## 如果分母为负数 则处理整个分数self.simplify()    ## 约分数 @propertydef num(self):return self._num@propertydef den(self):return self._dendef add(self, other):return Fraction(self._num * other.den + self._den * other.num,self._den * other.den).simplify().normalize()def sub(self, other):return Fraction(self._num * other.den - self._den * other.num,self._den * other.den).simplify().normalize()def mul(self, other):return Fraction(self._num * other.num, self._den * other.den)\.simplify().normalize()def div(self, other):return Fraction(self._num * other.den, self._den * other.num)\.simplify().normalize()def __add__(self, other):    ## 这是用内置加减乘法运算return self.add(other)def __sub__(self, other):return self.sub(other)def __mul__(self, other):return self.mul(other)def __truediv__(self, other):return self.div(other)def simplify(self):if self._num != 0 and self._den != 1:factor = gcd(abs(self._num), abs(self._den))if factor > 1:self._num //= factorself._den //= factorreturn selfdef normalize(self):if self._den < 0:self._num = -self._numself._den = -self._denreturn selfdef __str__(self):if self._num == 0:return '0'elif self._den == 1:return str(self._num)else:return '%d/%d' % (self._num, self._den)def main():f1 = Fraction(3, -6)f2 = Fraction(3, 4)print(f1)print(f2)print(f1 + f2)print(f1 - f2)print(f1 * f2)print(f1 / f2)print((f1 - f2) * f2)if __name__ == '__main__':main()

结果如下:

-1/2
3/4
1/4
-5/4
-3/8
-2/3
-15/16

第二个程序:大球吃小球

from random import randintimport pygameclass Ball(object):def __init__(self, center, color, radius, speed):  # 中心点 ,颜色,半径,速度self._center = centerself._color = colorself._radius = radiusself._speed = speed@propertydef center(self):return self._center@propertydef radius(self):return self._radiusdef move(self): ## 移动x, y = self._center[0], self._center[1]sx, sy = self._speed[0], self._speed[1]self._center = x, y = x + sx, y + syif x + self._radius >= 800 or x - self._radius <= 0:self._speed = -sx, syif y + self._radius >= 600 or y - self._radius <= 0:self._speed = sx, -sydef draw(self, screen):pygame.draw.circle(screen, self._color, self._center,self._radius, 0)def main():balls = []pygame.init()screen = pygame.display.set_mode((800, 600))pygame.display.set_caption('大球吃小球')clock = pygame.time.Clock()running = Truewhile running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.MOUSEBUTTONDOWN \and event.button == 1:color = random_color()radius = randint(10, 100)speed = randint(-10, 10), randint(-10, 10)ball = Ball(event.pos, color, radius, speed)balls.append(ball)refresh(screen, balls)clock.tick(24)for ball in balls:ball.move()pygame.quit()def refresh(screen, balls):bg_color = (242, 242, 242)screen.fill(bg_color)for ball in balls:ball.draw(screen)pygame.display.flip()def random_color():red = randint(0, 255)green = randint(0, 255)blue = randint(0, 255)return red, green, blueif __name__ == '__main__':main()

这个的BUG是四个角落点击出现的 球会出现类似卡住抖动的效果,还需要改进

第三个程序是五子棋:

import pygameEMPTY = 0
BLACK = 1
WHITE = 2black_color = [0,0,0]    # 黑棋
white_color = [255, 255,255]   #白棋class RenjuBoard(object):def __init__(self):self._board = [[]] * 15self.reset()            #  棋盘状态def reset(self):for row in range(len(self._board)):self._board[row] = [EMPTY] * 15    # 清空棋盘#走棋def move(self,row,col,is_black):if self._board[row][col] == EMPTY:self._board[row][col] = BLACK if is_black else WHITEreturn Truereturn False# 画棋盘# 传屏幕def draw(self,screen):for index in range(1, 16):pygame.draw.line(screen, black_color,[40, 40 * index], [600, 40 * index], 2)          #  划线   屏幕 起点位置 初始位置 结束位置 线段粗细pygame.draw.line(screen, black_color,[40 * index, 40], [40 * index, 600], 2)  pygame.draw.rect(screen, black_color, [36, 36, 568, 568], 4)  # 画矩形  左上角起点前两个 后两个宽高pygame.draw.circle(screen, black_color, [320, 320], 5, 0)  # 画圆 后面0表示填充pygame.draw.circle(screen, black_color, [160, 160], 5, 0)pygame.draw.circle(screen, black_color, [480, 480], 5, 0)pygame.draw.circle(screen, black_color, [480, 160], 5, 0)pygame.draw.circle(screen, black_color, [160, 480], 5, 0)for row in range(len(self._board)):for col in range(len(self._board[row])):if self._board[row][col] != EMPTY:ccolor = black_color \if self._board[row][col] == BLACK else white_colorpos = [40 * (col + 1), 40 * (row + 1)]pygame.draw.circle(screen, ccolor, pos, 20, 0)def main():board = RenjuBoard()is_black = Truepygame.init()                                  #  初始化 pygame.display.set_caption('五子棋')            #  名字命名screen = pygame.display.set_mode([640, 640])   # 桌面大小screen.fill([255, 255, 0])                  # 填充board.draw(screen)                              # 执行画格子动作pygame.display.flip()                      #更新显示到屏幕表面 running = Truewhile running:for event in pygame.event.get():         ## 判断事件if event.type == pygame.QUIT:          ## 退出窗口running = False                    # 运行结束elif event.type == pygame.MOUSEBUTTONDOWN\and event.button == 1:             # 鼠标点击事件x,y = event.pos           #  事件发生坐标row =round((y - 40)/40)col = round((x - 40) / 40)if board.move(row,col,is_black):is_black = not is_black      # 检查如果不是白色screen.fill([255,255,0])    # 填充board.draw(screen)        # 执行画格子动作pygame.display.flip()       #更新显示到屏幕表面 pygame.quit()                               # 退出if __name__ == '__main__':main()

三个分数、大球吃小球、五子棋相关推荐

  1. Python第三周习题集(一) (工资结算系统 抽象类 静态方法 贪吃蛇 分数的重写 五子棋 大球吃小球 )...

    # 工资结算系统 1. 部门经理 1.5万元/月 2. 程序员 工作时间 150元/小时 3.销售员 1200底薪,+ %5销售额的提成 # 给你员工,得出工资. 员工类,父类 下面3类子类.#我写的 ...

  2. 自学一周python做的一个小游戏《大球吃小球》

    需求 1,显示一个窗口. 2,我们要做到的功能有鼠标点击屏幕生成小球. 3,生成的小球大小随机,颜色随机,向随机方向移动,速度也随机. 4,大的球碰到小球时可以吃掉小球,吃掉后会变大. 5,球碰到边界 ...

  3. 大球吞小球html5游戏在线玩,大球吃小球大作战

    大球吃小球大作战是以大鱼吃小鱼这个定论做的一款休闲类游戏,游戏玩法如题,尽量多的吃掉比你小的,不要被比你大的吃掉了哟. 官方介绍 大球吃小球大作战是一款酷萌的休闲游戏,玩家在游戏中就要大球吃小球,努力 ...

  4. Python大球吃小球

    本小游戏采用了pygame模块 1.产生随机颜色的小球.2.小球具有移动.吃别的小球.绘制这3个方法.3.鼠标点击事件 上源码 // 大球吃小球 from enum import Enum, uniq ...

  5. 大球吃小球html5,怎么用html5制作简单的大球吃小球的游戏

    匿名用户 1级 2017-12-16 回答 <html> <head> <title> 大球吃小球by大奔 </title> <script ty ...

  6. java 运动的大球吃小球_JAVA 多线程制作大球吃小球 一、实现球的自动生成及运动 生产消费模型...

    /*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 [email protected]*/ 前几天用多线程实现了创建小球并移动,想到大鱼吃小鱼,便突发奇想要写一个大球吃小球.首先第一步自然是先 ...

  7. java编写游戏_java编写小游戏-大球吃小球

    游戏界面: 点击火箭开始游戏 点击Exit退出游戏 左上角显示当前成绩和历史最高分 退出自动保存最高成绩 代码获取 扫码关注微信公众号[程序猿声] 在后台回复[EBG]不包括[]即可获取. 玩法: 玩 ...

  8. python练习---大球吃小球游戏

    要求: 鼠标点击屏幕会自动产生不同大小的小球,小球会自动移动,碰到屏幕边界反弹回来,当不同大小的小球相遇在一起发生碰撞,大的小球会吃掉较小的小球,变得更大 代码: import pygame impo ...

  9. python:大球吃小球

    大球吃小球 from enum import Enum, unique from math import sqrt from random import randintimport pygame@un ...

最新文章

  1. jQuery的var that=this
  2. 原来这些行业的“潜规则”是这样的...
  3. python第一周心得_python第一周心得-Go语言中文社区
  4. opencv中的安全指针和指针对齐
  5. 区块链需要用到mysql吗_区块链和传统数据库有什么区别?
  6. FISCO BCOS 同态加密 实例
  7. 路畅畅云固件升级教程_【图】【折腾导航】路畅导航固件升级、刷机、实现一机多图教程!...
  8. 入门程序员如何写博客
  9. 龙芯3A3000和龙芯3B3000芯片处理器参数介绍
  10. java 编写metro风格_纯Javascript实现Windows 8 Metro风格实现
  11. Beta版是什么意思
  12. 事后诸葛亮分析(小小大佬带飞队)
  13. Widows下安装SCALA
  14. angularjs 猜大小
  15. 技术领导力:作为技术团队领导经常为人所忽略的技能和职责
  16. ios Objective-c 字体样式大全(UIFont 可设置的)
  17. 公安人员审问四名窃贼嫌疑犯
  18. 由一次线上故障来理解下 TCP 三握、四挥 Java 堆栈分析到源码的探秘
  19. python爬取糗事百科超搞笑图片
  20. Ethercat PDO映射关系

热门文章

  1. k8s-集群管理系统-KubeSphere2.1.0搭建与测试
  2. 网站常用的五种布局方案
  3. 修改element单选框样式
  4. 全球及中国TDI相机行业深度调研与未来发展趋势展望报告2021年版
  5. eacharts和eacharts-gl、3d饼图、3d柱状图加折线图、下载gl报错解决
  6. 华夫饼为什么不松软_华夫饼自己在家做,不加泡打粉,松软又可口,操作简单,一学就会...
  7. D - Squirrel and chestnut(二分)
  8. GFE2022第43届广州特许连锁加盟展览会
  9. Angular self study 4 - data entered by end user
  10. supervisorctl start报错 project-ops entered FATAL state, too many start retries too quickly