是男人就下一百楼pygame代码

我发现我这几天都没有更新pygame游戏代码,所以呢。。。嘿嘿嘿来更新了。不多叭叭当然是上代码啦(想要点赞😏好不好吗😁◑﹏◐)

#!python3
# -*- coding: utf-8 -*-
import pygame
import game
from random import choice, randintSCORE = 0
SOLID = 1
FRAGILE = 2
DEADLY = 3
BELT_LEFT = 4
BELT_RIGHT = 5
BODY = 6GAME_ROW = 40
GAME_COL = 28
OBS_WIDTH = GAME_COL // 4
SIDE = 13
SCREEN_WIDTH = SIDE*GAME_COL
SCREEN_HEIGHT = SIDE*GAME_ROW
COLOR = {SOLID: 0x00ffff, FRAGILE: 0xff5500, DEADLY: 0xff2222, SCORE: 0xcccccc,BELT_LEFT: 0xffff44, BELT_RIGHT: 0xff99ff, BODY: 0x00ff00}
CHOICE = [SOLID, SOLID, SOLID, FRAGILE, FRAGILE, BELT_LEFT, BELT_RIGHT, DEADLY]class Barrier(object):def __init__(self, screen, opt=None):self.screen = screenif opt is None:self.type = choice(CHOICE)else:self.type = optself.frag_touch = Falseself.frag_time = 12self.score = Falseself.belt_dire = 0self.belt_dire = pygame.K_LEFT if self.type == BELT_LEFT else pygame.K_RIGHTleft = randint(0, SCREEN_WIDTH - 7 * SIDE - 1)top = SCREEN_HEIGHT - SIDE - 1self.rect = pygame.Rect(left, top, 7*SIDE, SIDE)def rise(self):if self.frag_touch:self.frag_time -= 1if self.frag_time == 0:return Falseself.rect.top -= 2return self.rect.top >= 0def draw_side(self, x, y):if self.type == SOLID:rect = pygame.Rect(x, y, SIDE, SIDE)self.screen.fill(COLOR[SOLID], rect)elif self.type == FRAGILE:rect = pygame.Rect(x+2, y, SIDE-4, SIDE)self.screen.fill(COLOR[FRAGILE], rect)elif self.type == BELT_LEFT or self.type == BELT_RIGHT:rect = pygame.Rect(x, y, SIDE, SIDE)pygame.draw.circle(self.screen, COLOR[self.type], rect.center, SIDE // 2 + 1)elif self.type == DEADLY:p1 = (x + SIDE//2 + 1, y)p2 = (x, y + SIDE)p3 = (x + SIDE, y + SIDE)points = [p1, p2, p3]pygame.draw.polygon(self.screen, COLOR[DEADLY], points)def draw(self):for i in range(7):self.draw_side(i*SIDE+self.rect.left, self.rect.top)class Hell(game.Game):def __init__(self, title, size, fps=60):super(Hell, self).__init__(title, size, fps)self.last = 6 * SIDEself.dire = 0self.barrier = [Barrier(self.screen, SOLID)]self.body = pygame.Rect(self.barrier[0].rect.center[0], 200, SIDE, SIDE)self.bind_key([pygame.K_LEFT, pygame.K_RIGHT], self.move)self.bind_key_up([pygame.K_LEFT, pygame.K_RIGHT], self.unmove)self.bind_key(pygame.K_SPACE, self.pause)def move(self, key):self.dire = keydef unmove(self, key):self.dire = 0def show_end(self):self.draw(0, end=True)self.end = Truedef move_man(self, dire):if dire == 0:return Truerect = self.body.copy()if dire == pygame.K_LEFT:rect.left -= 1else:rect.left += 1if rect.left < 0 or rect.left + SIDE >= SCREEN_WIDTH:return Falsefor ba in self.barrier:if rect.colliderect(ba.rect):return Falseself.body = rectreturn Truedef get_score(self, ba):if self.body.top > ba.rect.top and not ba.score:self.score += 1ba.score = Truedef to_hell(self):self.body.top += 2for ba in self.barrier:if not self.body.colliderect(ba.rect):self.get_score(ba)continueif ba.type == DEADLY:self.show_end()returnself.body.top = ba.rect.top - SIDE - 2if ba.type == FRAGILE:ba.frag_touch = Trueelif ba.type == BELT_LEFT or ba.type == BELT_RIGHT:# self.body.left += ba.belt_direself.move_man(ba.belt_dire)breaktop = self.body.topif top < 0 or top+SIDE >= SCREEN_HEIGHT:self.show_end()def create_barrier(self):solid = list(filter(lambda ba: ba.type == SOLID, self.barrier))if len(solid) < 1:self.barrier.append(Barrier(self.screen, SOLID))else:self.barrier.append(Barrier(self.screen))self.last = randint(3, 5) * SIDEdef update(self, current_time):if self.end or self.is_pause:returnself.last -= 1if self.last == 0:self.create_barrier()for ba in self.barrier:if not ba.rise():if ba.type == FRAGILE and ba.rect.top > 0:self.score += 1self.barrier.remove(ba)self.move_man(self.dire)self.move_man(self.dire)self.to_hell()def draw(self, current_time, end=False):if self.end or self.is_pause:returnself.screen.fill(0x000000)self.draw_score((0x3c, 0x3c, 0x3c))for ba in self.barrier:ba.draw()if not end:self.screen.fill(COLOR[BODY], self.body)else:self.screen.fill(COLOR[DEADLY], self.body)pygame.display.update()if __name__ == '__main__':print('''Welcome to To Hell with Memory!press LEFT and RIGHT arrow key to play game.press SPACE to pause.''')hell = Hell("To Hell with Memory", (SCREEN_WIDTH, SCREEN_HEIGHT))hell.run()

呦西都看到这里了给个赞吧(不给我也没有办法)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部