Commit 802d75ad by BellCodeEditor

save project

parent 654bc3ba
++ "b/fdfd\343\200\202py"
import turtle
screen=turtle.Screen()
screen.bgcolor("light blue")
len=screen.textinput("提示","haha")
len=int(len)
pen=turtle.Pen()
pen.write("静夜思\n床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。",font=("Times",30,"normal"))
pen.hideturtle()
len=60
pen.penup()
pen.goto(100,100)
pen1=turtle.Pen()
pen1.color("red")
pen1.pensize(5)
pen1.left(45)
pen1.forward(2*len)
pen1.circle(len,180)
pen1.right(90)
pen1.circle(len,180)
pen1.forward(2*len)
pen.hideturtle()
turtle.done()
\ No newline at end of file
import random
import pygame
SCREEN_RECT=pygame.Rect(0,0,660,909)
FRAME_PER_SEC=60
CREATE_ENEMY_EVENT=pygame.USEREVENT
HERO_FIRE_EVENT=pygame.USEREVENT+1
class GameSprite (pygame.sprite.Sprite):
def __init__(self,image_name,speed=1,speed1=1):
super().__init__()
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed
self.speed1 = speed1
def update(self):
self.rect.y += self.speed
class Background(GameSprite):
def __init__(self,is_alt=False):
super().__init__("./ditu.jpg")
if is_alt:
self.rect.y=-self.rect.height
def update(self):
super().update()
if self.rect.y>=SCREEN_RECT.height:
self.rect.y=-self.rect.height
class Enemy(GameSprite):
def __init__(self):
if random.random()<0.21:
super().__init__("./bd2.png")
elif random.random()>0.81:
super().__init__("./bd4.png")
elif random.random()>0.21 and random.random()<0.4 :
super().__init__("./bd5.png")
else:
super().__init__("./bd6.png")
self.speed=random.randint(1,2)
self.rect.bottom=0
max_x=SCREEN_RECT.width-self.rect.width
self.rect.x=random.randint(0,max_x)
pass
def update(self):
super().update()
if self.rect.y>=SCREEN_RECT.height:
self.kill()
def __del__(self):
pass
class Hero(GameSprite):
def __init__(self):
super().__init__("./ys1.png",0)
self.rect.centerx=SCREEN_RECT.centerx
self.rect.bottom=SCREEN_RECT.bottom-50
self.bullets=pygame.sprite.Group()
def update(self):
self.rect.x += self.speed
self.rect.y += self.speed1
if self.rect.x<0:
self.rect.x=0
elif self.rect.right>SCREEN_RECT.right:
self.rect.right=SCREEN_RECT.right
elif self.rect.y>800:
self.rect.y=800
elif self.rect.y<SCREEN_RECT.top:
self.rect.y=SCREEN_RECT.top
def fire(self):
keys_pressed=pygame.key.get_pressed()
if keys_pressed[pygame.K_SPACE]:
sound3=pygame.mixer.Sound("./hu1.wav")
sound3.play()
for i in range(1):
bullet=BUllet()
bullet.rect.bottom=self.rect.y
bullet.rect.centerx=self.rect.centerx+i*42
self.bullets.add(bullet)
class BUllet(GameSprite):
def __init__(self):
super().__init__("./2.png",-4)
def update(self):
super().update()
if self.rect.bottom<0:
self.kill()
def __del__(self):
pass
\ No newline at end of file
mport os
import cfg
import sys
import pygame
import random
from modules import *
'''游戏初始化'''
def initGame():
# 初始化pygame, 设置展示窗口
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('catch coins —— 九歌')
# 加载必要的游戏素材
game_images = {}
for key, value in cfg.IMAGE_PATHS.items():
if isinstance(value, list):
images = []
for item in value: images.append(pygame.image.load(item))
game_images[key] = images
else:
game_images[key] = pygame.image.load(value)
game_sounds = {}
for key, value in cfg.AUDIO_PATHS.items():
if key == 'bgm': continue
game_sounds[key] = pygame.mixer.Sound(value)
# 返回初始化数据
return screen, game_images, game_sounds
'''主函数'''
def main():
# 初始化
screen, game_images, game_sounds = initGame()
# 播放背景音乐
pygame.mixer.music.load(cfg.AUDIO_PATHS['bgm'])
pygame.mixer.music.play(-1, 0.0)
# 字体加载
font = pygame.font.Font(cfg.FONT_PATH, 40)
# 定义hero
hero = Hero(game_images['hero'], position=(375, 520))
# 定义食物组
food_sprites_group = pygame.sprite.Group()
generate_food_freq = random.randint(10, 20)
generate_food_count = 0
# 当前分数/历史最高分
score = 0
highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())
# 游戏主循环
clock = pygame.time.Clock()
while True:
# --填充背景
screen.fill(0)
screen.blit(game_images['background'], (0, 0))
# --倒计时信息
countdown_text = 'Count down: ' + str((90000 - pygame.time.get_ticks()) // 60000) + ":" + str((90000 - pygame.time.get_ticks()) // 1000 % 60).zfill(2)
countdown_text = font.render(countdown_text, True, (0, 0, 0))
countdown_rect = countdown_text.get_rect()
countdown_rect.topright = [cfg.SCREENSIZE[0]-30, 5]
screen.blit(countdown_text, countdown_rect)
# --按键检测
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
hero.move(cfg.SCREENSIZE, 'left')
if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
hero.move(cfg.SCREENSIZE, 'right')
# --随机生成食物
generate_food_count += 1
if generate_food_count > generate_food_freq:
generate_food_freq = random.randint(10, 20)
generate_food_count = 0
food = Food(game_images, random.choice(['gold',] * 10 + ['apple']), cfg.SCREENSIZE)
food_sprites_group.add(food)
for food in food_sprites_group:
if food.update(): food_sprites_group.remove(food)
# --碰撞检测
for food in food_sprites_group:
if pygame.sprite.collide_mask(food, hero):
game_sounds['get'].play()
food_sprites_group.remove(food)
score += food.score
if score > highest_score: highest_score = score
# --画hero
hero.draw(screen)
# --画食物
food_sprites_group.draw(screen)
# --显示得分
score_text = f'Score: {score}, Highest: {highest_score}'
score_text = font.render(score_text, True, (0, 0, 0))
score_rect = score_text.get_rect()
score_rect.topleft = [5, 5]
screen.blit(score_text, score_rect)
if pygame.time.get_ticks() >= 90000:
break
# --更新屏幕
pygame.display.flip()
clock.tick(cfg.FPS)
# 游戏结束, 记录最高分并显示游戏结束画面
fp = open(cfg.HIGHEST_SCORE_RECORD_FILEPATH, 'w')
fp.write(str(highest_score))
fp.close()
return showEndGameInterface(screen, cfg, score, highest_score)
'''run'''
if __name__ == '__main__':
while main():
pass
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment