Written in Python fishing up

Written in Python fishing up

Today's hottest way to write a Python fishing up effects. Consequently Needless to say, the code bright ~~~

# coding:utf-8
# 导入模块
import pygame,sys,time,random
from pygame.locals import *
# 初始化pygame环境
pygame.init()
# 创建一个长宽分别为800/480的窗口
canvas = pygame.display.set_mode((800,480))
canvas.fill((255,255,255))
# 设置窗口标题
pygame.display.set_caption('捕鱼达人')
# 加载图片
bg = pygame.image.load("./images/bg.jpg")
fish1 = pygame.image.load("./images/fish1_0.png")
fish2 = pygame.image.load("./images/fish2_0.png")
fish3 = pygame.image.load("./images/fish3_0.png")
fish4 = pygame.image.load("./images/fish4_0.png")
fish5 = pygame.image.load("./images/fish5_0.png")
fish6 = pygame.image.load("./images/fish6_0.png")
fish7 = pygame.image.load("./images/fish7_0.png")
fish8 = pygame.image.load("./images/fish8_0.png")
fish9 = pygame.image.load("./images/fish9_0.png")
fish10 = pygame.image.load("./images/fish10_0.png")
fish11 = pygame.image.load("./images/fish11_0.png")
net = pygame.image.load("./images/net.png")
gameover = pygame.image.load("./images/gameover.jpg")
# 定义事件监听函数
def handleEvent():
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        # 添加鼠标移动事件,让鼠标控制网的移动
        if event.type == MOUSEMOTION:
            Game.net.x = event.pos[0] - Game.net.width/2
            Game.net.y = event.pos[1] - Game.net.height/2
# 定义时间间隔判断函数
def isActionTime(lastTime,interval):
    if lastTime == 0:
        return True
    currentTime = time.time()
    return currentTime - lastTime >= interval
# 定义鱼类
class Fish():
    def __init__(self,width,height,y,img):
        self.width = width
        self.height = height
        self.x = 800 - self.width
        self.y = y
        self.img = img
    def paint(self):
        canvas.blit(self.img,(self.x,self.y))
    def step(self):
        self.x -= 10
# 定义网类
class Net():
    def __init__(self,x,y):
        self.x = x
        self.y = y
        self.width = 160
        self.height = 160
        self.img = net
    def paint(self):
        canvas.blit(self.img,(self.x,self.y))
    # 定义越界函数
    def outOfBounds(self):
        if self.x <= 0:
            self.x = 0
        elif self.x >= 800 - self.width:
            self.x = 800 - self.width
        elif self.y <= 0:
            self.y = 0
        elif self.y >= 480 - self.height:
            self.y = 480 - self.height
    # 定义碰撞函数
    def hit(self,c):
        return c.x > self.x - c.width and c.x < self.x + self.width and c.y > self.y - c.height and c.y < self.y + self.height
# 定义存储游戏数据的类
class Game():
    # 游戏状态
    state = 'RUNNING'
    # 鱼的列表
    fish = []
    # 网的对象
    net = Net(100,100)
    # 分数
    score = 0
    # 时间
    t = 60
    n = 1
    # 上一次时间
    lastTime = 0
    # 时间间隔
    interval = 0.5
    # 所有鱼的宽高
    fish_pos = [[22,13],[50,48],[55,55],[73,73],[104,80],[60,60],[93,93],[94,81],[99,103],[180,140],[320,206],[100,96]]
# 定义产生鱼的函数
def conEnter():
    if not isActionTime(Game.lastTime,Game.interval):
        return
    Game.lastTime = time.time()
    r = random.randint(1,11)
    if Game.t <= 60:
        Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
    elif Game.t <= 30:
        Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
        Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
    elif Game.t <= 10:
        Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
        Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
        Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
# 定义画组件函数
def conPaint():
    canvas.blit(bg,(0,0))
    Game.net.paint()
    showScore()
    showTime()
    for fish in Game.fish:
        fish.paint()
# 定义组件移动函数
def conStep():
    Game.net.outOfBounds()
    for fish in Game.fish:
        fish.step()
# 定义碰撞检测函数
def checkHit():
    for fish in Game.fish:
        if Game.net.hit(fish) and len(Game.fish) != 0:
            Game.fish.remove(fish)
            Game.score += 1
# 定义绘制分数函数
def showScore():
    TextFont = pygame.font.SysFont('SimHei',40)
    TextScore = TextFont.render('得分:'+str(Game.score),True,(255,255,255))
    canvas.blit(TextScore,(20,20))
# 定义绘制时间函数
def showTime():
    TextFont = pygame.font.SysFont('SimHei',40)
    TextScore = TextFont.render('剩余时间:'+str(Game.t),True,(255,255,255))
    canvas.blit(TextScore,(550,20))
    if Game.n % 50 == 1:
        Game.t -= 1
    Game.n += 1
    if Game.t == 0:
        Game.state = 'END'
# 定义主控制函数
def control():
    if Game.state == 'RUNNING':
        conEnter()
        conPaint()
        conStep()
        checkHit()
    elif Game.state == 'END':
        canvas.blit(gameover,(0,0))
        TextFont = pygame.font.SysFont('SimHei',40)
        TextScore = TextFont.render('最终得分:'+str(Game.score),True,(0,0,0))
        canvas.blit(TextScore,(50,50))
while True:
    # 调用主控制函数
    control()
    # 更新屏幕内容
    pygame.display.update()
    # 延迟10毫秒
    pygame.time.delay(10)
    # 监听事件
    handleEvent()

This code took some of the basics of Python, including events, defined functions, take the remainder, cycling, judgment, the definition of class, create objects. These have nothing to say. Import of several libraries also very popular library, basically be necessary programmer. Put the code here is mainly to let everyone learn. If not write really people called to continue to write a Python ...
I can use my code, when making event monitoring and other functions should be convenient.
I made the picture below Kazakhstan, need self-created.
Source and photo extraction extraction code: p7ax
this issue to this, the next issue to see what, message comment! If you like it, do not forget to point a praise yo!

Published an original article · won praise 11 · views 267

Guess you like

Origin blog.csdn.net/BearProgramming/article/details/105081547