猫史档案馆


【Python作品分享】index【教程贴】

用户:王大宝c839王大宝c839查看:0 回复:1 评论:0 创建时间:2020-08-26T20:07:29


【作品展示】

center_image

 

【作品介绍】

玩一下

 

【作品源代码】

#coding:utf-8
import pygame, sys, random, time, easygui,os
from pygame.locals import *
# 初始化pygame环境
pygame.init()
os.environ["SDL_VIDEO_WINDOW_POS"] = "%d, %d" % (100,30)
# 创建一个长宽分别为480/650窗口
canvas = pygame.display.set_mode((1600, 1000))
canvas.fi喵))
pygame.display.set_caption("火柴人吃豆豆")
bg = pygame.image.load("C:/Users/he/Desktop/火柴人吃豆豆/images/bg.png")
player = pygame.image.load("C:/Users/he/Desktop/火柴人吃豆豆/images/player.png")
food = pygame.image.load("C:/Users/he/Desktop/火柴人吃豆豆/images/food.png")
cut  = pygame.image.load("C:/Users/he/Desktop/火柴人吃豆豆/images/cut.png")
desk = pygame.image.load("C:/Users/he/Desktop/火柴人吃豆豆/images/desk.png")
die = pygame.image.load("C:/Users/he/Desktop/火柴人吃豆豆/images/die.png")
win = pygame.image.load("C:/Users/he/Desktop/火柴人吃豆豆/images/win.png")
button = pygame.image.load("C:/Users/he/Desktop/火柴人吃豆豆/images/button.png")
# 创建游戏退出事件处理方法
def handleEvent():
    key_pressed = pygame.key.get_pressed()
    if Game.p.state2 == 0 or Game.p.state2 == 2:
        if key_pressed[pygame.K_RIGHT]:
            Game.p.x += 14
    if Game.p.state2 == 0 or Game.p.state2 == 1:
        if key_pressed[pygame.K_LEFT]:
            Game.p.x -= 14
    for event in pygame.event.get():
        if event.type == pygame.QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
            pygame.quit()
            sys.exit() 
        if event.type == KEYDOWN and event.key == K_UP:
            if Game.p.state == 0:
                Game.p.state = 1
            if Game.p.state == 2:
                Game.p.y+=20
# 添加时间间隔的方法
def isActionTime(lastTime, interval):
    if lastTime == 0:
        return True
    currentTime = time.time()
    return currentTime - lastTime >= interval
class Player():
    def __init__(self,x):
        self.width = 63
        self.height = 95
        self.x = x
        self.y = 975 - self.height
        self.life = 1
        self.state = 0
        self.state2 = 0
        self.state3 = 0
        self.img = player
        self.shootLastTime1 = 0
        self.shootInterval1 = 6
        self.shootLastTime2 = 0
        self.shootInterval2 = 6
    def paint(self):
        canvas.blit(self.img,(self.x,self.y))
    def hit(self,c):
        return c.x > self.x - c.width and c.x < self.x + self.width and \
               c.y >= self.y + self.height and c.y <= self.y + self.height+c.height
    def hit2(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
    def hit3(self,d):
        if not (d.x > self.x - d.width and d.x < self.x + self.width):
            return True
    def step(self):
        if self.state == 0:
            for d in Game.desks:
                if self.y+self.height == d.y and Game.p.hit3(d) and self.y != 880:
                    self.state3 = 1
        if self.state == 1:
            for a in range(175):
                self.y-=1.25
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            for b in range(75):
                self.y-=0.55
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            for c in range(40):
                self.y-=0.25
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            for d in range(15):
                self.y-=0.15
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            for e in range(1000):
                self.y -= 0.005
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            self.state = 0
            self.state3 = 1
        elif self.state3 == 1:
            if self.y >= 920:
                self.state3 = 0
                self.state = 0
            self.y+=8
            for d in Game.desks:
                if Game.p.hit(d):
                    self.state = 0
                    self.state2 = 0
                    self.y += d.y-self.y-self.height
                    self.state3 = 0
                for d in Game.desks:
                    if Game.p.hit2(d):
                        if abs(Game.p.x-d.x) < abs(Game.p.x-d.x-d.width):
                            self.state2 = 1
                            self.state = 2
                        else:
                            self.state2 = 2
                            self.state = 2
                else:
                    self.state == 2
    def step2(self):
        if self.state == 0:
            for d in Game.desks:
                if self.y+self.height == d.y and Game.p.hit3(d) and self.y != 880:
                    self.state = 2
        if self.state == 1:
            for a in range(175):
                self.y-=1.25
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            for b in range(75):
                self.y-=0.55
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            for c in range(40):
                self.y-=0.25
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            for d in range(15):
                self.y-=0.15
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            for e in range(1000):
                self.y -= 0.005
                for d in Game.desks:
                    if Game.p.hit2(d):
                        self.state = 2
                if self.state == 2:
                    break
            self.state = 2
        elif self.state == 2:
            if self.y >= 920:
                self.state3 = 0
                self.state = 0
            self.y+=8
            for d in Game.desks:
                if Game.p.hit(d):
                    self.state = 0
                    self.state2 = 0
                    self.y += d.y-self.y-self.height
                    self.state3 = 0
                for d in Game.desks:
                    if Game.p.hit2(d):
                        if abs(Game.p.x-d.x) < abs(Game.p.x-d.x-d.width):
                            self.state2 = 1
                            self.state = 2
                        else:
                            self.state2 = 2
                            self.state = 2
                else:
                    self.state == 2
    def out(self):
        if self.x <= 0:
            self.x += 50
        elif self.x + self.width >= 1600:
            self.x -= 50
    def shoot(self):
        if Game.state == 'running':
            if not isActionTime(self.shootLastTime1,self.shootInterval1):
                return 
            self.shootLastTime1 = time.time()
            print('aa')
            Game.buttons1.append(Button(200,-20))
            Game.buttons1.append(Button(400,-20))
            Game.buttons1.append(Button(900,-20))
            Game.buttons1.append(Button(1390,-20))
    def shoot2(self):
        if Game.state == 'running':
            if not isActionTime(self.shootLastTime2,self.shootInterval2):
                return 
            self.shootLastTime2 = time.time()
            Game.buttons2.append(Button(1632,100))
            Game.buttons2.append(Button(1632,200))
            Game.buttons2.append(Button(1632,900))
            Game.buttons2.append(Button(1632,550))
class Button():
    def __init__(self,x,y):
        self.width = 24
        self.height = 31
        self.x = x
        self.y = y
        self.img = button
    def paint(self):
        canvas.blit(self.img,(self.x,self.y))
    def step(self):
        self.x -= 14
    def step2(self):
        self.y += 14
    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 Food():
    def __init__(self,x,y):
        self.width = 25
        self.height = 23
        self.x = x
        self.y = y
        self.img = food
    def paint(self):
        canvas.blit(self.img,(self.x,self.y))
    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 Cut():
    def __init__(self,x,y):
        self.width = 137
        self.height = 26
        self.x = x
        self.y = y
        self.img = cut
    def paint(self):
        canvas.blit(self.img,(self.x,self.y))
    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 Desk():
    def __init__(self,x,y):
        self.width = 400
        self.height = 25
        self.x = x
        self.y = y
        self.img = desk
    def paint(self):
        canvas.blit(self.img,(self.x,self.y))
class Game():
    desks = []
    cuts = []
    foods = []
    #上方子弹
    buttons1 = []
    #下方子弹
    buttons2 = []
    p = Player(200)
    s = 0
    state = 'start'
def comEnter():
    Game.cuts.append(Cut(600,949))
    Game.cuts.append(Cut(450,570))
    Game.desks.append(Desk(0,975))
    Game.desks.append(Desk(400,975))
    Game.desks.append(Desk(800,975))
    Game.desks.append(Desk(900,800))
    Game.desks.append(Desk(1200,975))
    Game.desks.append(Desk(350,600))
    Game.desks.append(Desk(0,750))
    Game.desks.append(Desk(-100,430))
    Game.desks.append(Desk(500,300))
    Game.desks.append(Desk(1300,500))
    Game.foods.append(Food(喵0,840))
    Game.foods.append(Food(1000,700))
    Game.foods.append(Food(490,450))
    Game.foods.append(Food(100,500))
    Game.foods.append(Food(200,800))
    Game.foods.append(Food(800,100))
    Game.foods.append(Food(1400,300))
def comPaint():
    canvas.blit(bg,(0,0))
    Game.p.paint()
    for c in Game.cuts:
        c.paint()
    for d in Game.desks:
        d.paint()
    for e in Game.foods:
        e.paint()
    for bu in Game.buttons1:
        bu.paint()
    for g in Game.buttons2:
        g.paint()
def checkHit():
    for c in Game.cuts:
        if c.hit(Game.p):
            Game.state = 'over'
    for d in Game.foods:
        if d.hit(Game.p):
            Game.foods.remove(d)
    for bu in Game.buttons1:
        if bu.hit(Game.p):
            Game.buttons1.remove(bu)
            Game.state = 'over'
    for f in Game.buttons2:
        if f.hit(Game.p):
            Game.state = 'over'
            Game.buttons2.remove(f)
def checkWin():
    if len(Game.foods) == 0:
        Game.state = 'win'
def comStep():
    if Game.s == 'OK':
        Game.p.step()
    else:
        Game.p.step2()
    Game.p.out()
    for bu in Game.buttons1:
        bu.step2()
    for g in Game.buttons2:
        g.step()
def comShoot():
    Game.p.shoot()
    Game.p.shoot2()
file = 'C:\\Users\\he\\AppData\\Local\\aef\\AliIM\\Application Cache\\Cache\\password.txt'
pas = ('输入密码','修改密码')
def passwordd():
    while True:
        aaa = easygui.buttonbox(choices = pas,title = '请选择服务类型')
        if aaa == '输入密码':
            fr = open(file)
            f = fr.readlines()
            for passw in f:
                password = ''+str(passw)
            password2 = str(easygui.passwordbox('请输入密码'))
            if password2 == password:
                Game.s = 'OK'
                easygui.msgbox("密码正确,请享受VIP服务")
                Game.state = 'running'
                break
            else:
                easygui.msgbox("密码错误,请享受普通服务")
                Game.state = 'running'
                break
        else:
            fr = open(file)
            f = fr.readlines()
            for passw in f:
                password = ''+str(passw)
            password2 = str(easygui.passwordbox('请输入原密码'))
            if password2 == password:
                easygui.msgbox("密码正确")
                time.sleep(1)
                password3 = str(easygui.passwordbox('请输入新密码'))
                with open(file,'w',encoding = 'UTF-8') as f:
                    f.write(password3)
            else:
                easygui.msgbox("密码错误")
def concrol():
    
    if Game.state == 'running':
        comPaint()
        comStep()
        checkHit()
        checkWin()
        comShoot()
    elif Game.state == 'over':
        canvas.blit(die,(0,0))
    elif Game.state == 'win':
        canvas.blit(win,(0,0))
comEnter()
passwordd()
while True:
    concrol()
    handleEvent()
    pygame.display.update() 

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
爱python的小萌新爱python的小萌新

requests-sofa~~

点赞0


评论