资源简介
pygame 编写连连看
代码片段和文件信息
“““
Name: 连连看游戏
Athor: 卢华东
Email: luhuadong@163.com
Date: 2018-07-07
Description: 哎呀,反正就是连连看啦
“““
import sys time
import math random
import pygame
from pygame.locals import *
# 全局的设置类
class Settings:
def __init__(self):
# 定义游戏窗口大小,为背景图片的一半
self.screen_size = (self.screen_width self.screen_height) = (800 480)
self.game_size = (self.game_row self.game_col) = (6 10)
self.map_total = self.game_row * self.game_col
self.element_num = 12
self.bg_color = (220 220 220)
self.title = ‘Pig Pig 连连看‘
self.win_image = ‘./images/you_win.png‘
self.grid_size = 80
self.scale_size = (76 76)
self.points = []
# 实例化设置对象
settings = Settings()
# 图像列表映射
map_list = []
#global map_list
image_list = []
# 图片按钮
class ImageBtn:
__checkable = True
__checked = False
def __init__(self screen image_path x y number element):
self.x = x
self.y = y
self.element = element
self.number = number
self.screen = screen
self.image = pygame.image.load(image_path)
# 因为图片原始大小为 200x200,所以要进行缩放
self.image = pygame.transform.scale(self.image settings.scale_size)
def __del__(self):
pass
def display(self):
# 描边
“““
if self.__checked:
#self.image = pygame.transform.laplacian(self.image)
pygame.draw.rect(self.image (0205205) (00self.image.get_width()-1self.image.get_height()-1) 2)
“““
“““
if not self.__checkable:
self.image.fill((255 255240))
“““
if self.__checked:
pygame.draw.rect(self.image (0205205255) (00self.image.get_width()-1self.image.get_height()-1) 2)
else:
pygame.draw.rect(self.image (02052050) (00self.image.get_width()-1self.image.get_height()-1) 2)
self.screen.blit(self.image (self.x self.y))
def hide(self):
self.__checked = False
self.__checkable = False
# 图片不可视
#self.image.set_alpha(255)
self.image.fill((255 255240))
def is_checkable(self):
return self.__checkable
def click(self):
self.__checked = not self.__checked
return self.__checked
def reset(self):
self.__checked = False
def get_geometry(self):
return (int(self.x) int(self.y) settings.scale_size[0] settings.scale_size[1])
# 水平扫描
def horizontal_scan(points):
“““
水平标定
以 p1 和 p2 所在的两个行作为基准线,然后用垂直线在有效范围内扫描,
一旦发现可行路径,直接返回。
hLine1 和 hLine2 分别是扫描的上边线和下边线
leftLimit 和 rightLimit 分别是扫描的左边线和右边线
“““
column = settings.game_col
p1_x = int(points[0].number % column)
p1_y = int(points[0].number / column)
p2_x = int(points[1].number % column)
p2_y = int(points[1].number / column)
# 如果 p1 和 p2 在同一行,则不符合要求
if p1_y == p2_y:
return False
print(“Horizontal Scanning ...“)
#
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-09-10 23:19 images\
文件 284 2020-09-10 23:19 images\element_0.png
文件 83693 2020-09-10 23:19 images\element_1.png
文件 63794 2020-09-10 23:19 images\element_10.png
文件 26292 2020-09-10 23:19 images\element_11.png
文件 62496 2020-09-10 23:19 images\element_12.png
文件 58338 2020-09-10 23:19 images\element_2.png
文件 40689 2020-09-10 23:19 images\element_3.png
文件 22883 2020-09-10 23:19 images\element_4.png
文件 36238 2020-09-10 23:19 images\element_5.png
文件 34105 2020-09-10 23:19 images\element_6.png
文件 27157 2020-09-10 23:19 images\element_7.png
文件 47194 2020-09-10 23:19 images\element_8.png
文件 39296 2020-09-10 23:19 images\element_9.png
文件 41533 2020-09-10 23:19 images\icon.png
文件 41533 2020-09-10 23:19 images\test.png
文件 108228 2020-09-10 23:19 images\you_win.png
文件 15221 2020-09-10 23:19 li
- 上一篇:基于PyQt5的视频播放器设计
- 下一篇:python疫情卡UN管控
评论
共有 条评论