main.py:
import pygame as pg
import block
import settings
import settings as st
import sys
import player
import random
import tkinter
pg.init()
font = pg.font.Font(r"C:\Windows\Fonts\arial.ttf", 10)
# 定义主屏幕
screen = pg.display.set_mode((800, 600))
screen.fill(st.screen_color)
pg.display.set_caption("方块碰碰车繁殖季")
icon = pg.image.load('path_your_png.png')
pg.display.set_icon(icon)
# 主角
player = player.player(random.randint(1, settings.share-1) * st.gz_width,
random.randint(1, settings.share-1) * st.gz_height)
player.draw(screen)
# 初始方块
blocks = [block.block(random.randint(1, settings.share-1) * st.gz_width,
random.randint(1, settings.share-1) * st.gz_height, (0, 255, 255))]
# 主循环
while True:
for event in pg.event.get():
if event.type == pg.QUIT:
sys.exit()
if event.type == pg.KEYDOWN:
for rect1 in blocks:
if rect1.me.right >= player.me.left and rect1.me.left <= player.me.right:
if rect1.me.bottom >= player.me.top and rect1.me.top <= player.me.bottom: # 两个矩形在边缘相交
if rect1.color == (0, 255, 255):
blocks.append(block.block(random.randint(1, settings.share-1) * st.gz_width,
random.randint(1, settings.share-1) * st.gz_height,
random.choice([(0, 255, 255), (255, 0, 255)])))
else:
tk = tkinter.Tk()
label = tkinter.Label(tk, text="Game Over!")
label.pack()
button = tkinter.Button(tk,text="yes", command=sys.exit)
button.pack()
tk.mainloop()
if event.key == pg.K_LEFT:
player.move(0, -1)
if event.key == pg.K_RIGHT:
player.move(0, 1)
if event.key == pg.K_UP:
player.move(-1, 0)
if event.key == pg.K_DOWN:
player.move(1, 0)
if event.key == pg.K_ESCAPE:
sys.exit()
# 刷新屏幕
pg.display.flip()
screen.fill(st.screen_color)
for _ in blocks:
_.draw(screen)
player.draw(screen)
text = font.render(f"Score: {len(blocks)-1}", True, (0, 0, 0))
screen.blit(text, (10, 10))
block.py:
import pygame as pg
import settings
class block:
def __init__(self, x, y, color):
self.x = x
self.y = y
self.width = settings.gz_width
self.height = settings.gz_height
self.color = color
self.me = pg.rect.Rect(self.x, self.y, self.width, self.height)
def draw(self, screen):
return pg.draw.rect(screen, self.color, self.me)
def move(self, x, y):
return self.me.move_ip(self.width * x, self.height * y)
player.py:
import pygame as pg
import settings
class player:
def __init__(self, x, y):
self.x = x
self.y = y
self.width = settings.gz_width
self.height = settings.gz_height
self.color = settings.player_color
self.me = pg.rect.Rect(self.x, self.y, self.width, self.height)
self.speed_width = settings.player_speed_width
self.speed_height = settings.player_speed_height
def draw(self, screen):
return pg.draw.rect(screen, self.color, self.me)
def move(self, height, width):
return self.me.move_ip(self.speed_width * width, self.speed_height * height)
settings.py:
share = 30
gz_width = 30
gz_height = 30
screen_width = share * gz_width
screen_height = share * gz_height
screen_color = (255, 255, 255)
player_color = (255, 255, 0)
player_speed_width = gz_width
player_speed_height = gz_height
最后还有个图片,叫path_your_png.png:
游戏说明:
如果运行时窗口一片空白,那就重新运行; 如果运行时窗口只有一个方块,也重新运行; 游戏规则: 1.如果将黄色方块碰到某个蓝色方块,离开时会繁殖 2.如果黄色方块碰到某个紫色方块,离开时会死 3.黄色方块由上下左右键控制