猫史档案馆


【Python作品分享】example

用户:勇敢小豆豆勇敢小豆豆查看:0 回复:0 评论:0 创建时间:2023-09-17T14:20:00


【作品展示】

center_image

 

【作品介绍】

一个小游戏,打靶子,想打哪点击那就行,谨慎计算位置哦

 

【作品源代码】

import pygame
import sys
from PIL import Image
import random

pygame.init()

image = Image.open("example.jpg")
size = image.size
window = pygame.display.set_mode((size[0], size[1]-400))
pygame.display.set_caption("flag example")

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super(Player, self).__init__()
        self.image = pygame.image.load("example.jpg")
        self.rect = self.image.get_rect()
        self.move = 0

    def draw(self, window):
        window.blit(self.image, self.rect)

class Army(pygame.sprite.Sprite):
    def __init__(self):
        super(Army, self).__init__()
        self.image = pygame.image.load("Army.png")
        self.image = pygame.transform.rotate(self.image, -90)
        self.rect = self.image.get_rect() 
        self.rect.x = -150
        self.rect.y = -150
        self.go = False
        self.go_pos = ()
        self.now_pos = ()
    
    def update(self):
        if self.go:
            if self.go_pos[1] < self.rect.y:
                num = (self.now_pos[1]-self.go_pos[1])//3
                plus = self.now_pos[0]//num
                self.rect.y -= 2
                if self.go_pos[0] > self.rect.x:
                    self.rect.x += plus-1
                elif self.go_pos[0] < self.rect.x:
                    self.rect.x -= plus
            else:
                self.go = False
                self.rect.x = -150
                self.rect.y = -150
        return (self.rect.x, self.rect.y)

    def again():
        self.rect.x = -150
        self.rect.y = -150

    def turn(self, pos):
        if self.go:
            self.go = False
        else:
            self.go = True
            self.rect.x = 440
            self.rect.y = 400
            self.go_pos = pos
            self.now_pos = (self.rect.x, self.rect.y)
    
    def draw(self, window):
        window.blit(self.image, self.rect)
    
class Food(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.mode = False
        self.threed = False
        self.collide = False
        self.image = pygame.image.load("food.png")
        self.rect = self.image.get_rect()
        self.rect.x = self.rect.x = random.randint(20, window.get_width()-20)
        self.speed = random.randint(1, 3)
        self.heart = 3
        self.font = pygame.font.Font(None, 40)
    
    def update(self, window, pos):
        if self.rect.y < window.get_height():
            self.rect.y += self.speed
        else:
            self.threed = True
            self.heart -= 1
            if self.heart == 0:
                quit()
            self.speed = random.randint(2, 4)
            self.rect.x = random.randint(20, window.get_width()-20)
            self.rect.y = -20
            for i in range(500):
                a = self.font.render("hert-1", True, "red")
                window.blit(a, [0, 0])
                pygame.display.flip()

        if self.rect.collidepoint(pos):
            self.collide = True
            if self.threed == False:
                for i in range(500):
                    a = self.font.render("hert+1", True, "red")
                    window.blit(a, [0, 0])
                    pygame.display.flip()
            else:

                self.threed = False

            self.heart += 1
            self.again()
        return self.collide

    def again(self):
        self.speed = random.randint(2, 4)
        self.rect.x = random.randint(20, window.get_width()-20)
        self.rect.y = -20

    def draw(self, window):
        window.blit(self.image, self.rect)

        
player = Player()
army = Army()

food_list = pygame.sprite.Group()
for i in range(3):
    food = Food()
    food_list.add(food)

clock = pygame.time.Clock()

while True:
    player.draw(window)
    return_pos = army.update()
    army.draw(window)
    c = food_list.update(window, return_pos)
    food_list.draw(window)
    if c:
        army.again()

    pygame.display.update()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            army.turn(pygame.mouse.get_pos())

    clock.tick(60)

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页