用python编写连连看
时间: 2023-09-12 18:03:20 浏览: 101
python连连看代码&图片资源
连连看是一种比较流行的游戏,它要求玩家在给定的图案中找到相同的两个图案,并用线连接起来。下面是一个简单的Python程序,用于实现连连看游戏。
首先,我们需要安装pygame库,这个库可以帮助我们创建游戏界面和处理用户输入。
```python
pip install pygame
```
接下来,我们需要定义一些常量和变量,如图案的数量、游戏界面的大小、图案的大小等。我们可以将这些常量放在一个名为`config`的字典中,以便稍后使用。
```python
import pygame
import random
# 游戏配置
config = {
'title': '连连看',
'icon': 'icon.png',
'width': 640,
'height': 480,
'bg_color': (255, 255, 255),
'pattern_width': 50,
'pattern_height': 50,
'pattern_gap': 10,
'patterns': ['1.png', '2.png', '3.png', '4.png', '5.png', '6.png', '7.png', '8.png']
}
# 初始化pygame
pygame.init()
# 设置游戏界面的大小
screen = pygame.display.set_mode((config['width'], config['height']))
# 设置游戏界面的标题和图标
pygame.display.set_caption(config['title'])
icon = pygame.image.load(config['icon'])
pygame.display.set_icon(icon)
# 加载图案
patterns = [pygame.image.load(pattern) for pattern in config['patterns']]
# 随机生成图案
random.shuffle(patterns)
```
然后,我们需要定义一个`draw_board`函数,用于绘制游戏界面。
```python
def draw_board():
# 清空游戏界面
screen.fill(config['bg_color'])
# 绘制图案
for i in range(len(patterns)):
row = i // 4
col = i % 4
x = col * (config['pattern_width'] + config['pattern_gap']) + config['pattern_gap']
y = row * (config['pattern_height'] + config['pattern_gap']) + config['pattern_gap']
screen.blit(patterns[i], (x, y))
# 刷新游戏界面
pygame.display.update()
```
接下来,我们需要定义一个`select_pattern`函数,用于处理用户的选择。该函数将返回两个被选中的图案的索引。
```python
def select_pattern():
selected = []
while len(selected) < 2:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
col = x // (config['pattern_width'] + config['pattern_gap'])
row = y // (config['pattern_height'] + config['pattern_gap'])
index = row * 4 + col
if index not in selected:
selected.append(index)
draw_board()
pygame.time.wait(500)
return selected
```
最后,我们需要定义一个`check_pattern`函数,用于检查用户选择的两个图案是否相同。
```python
def check_pattern(selected):
if patterns[selected[0]] == patterns[selected[1]]:
patterns.pop(selected[1])
patterns.pop(selected[0])
return True
else:
return False
```
现在,我们可以开始编写游戏的主循环了。在每次循环中,我们将调用`draw_board`函数绘制游戏界面,然后使用`select_pattern`函数获取用户的选择,最后使用`check_pattern`函数检查用户选择的两个图案是否相同。
```python
# 游戏主循环
while True:
draw_board()
selected = select_pattern()
if check_pattern(selected):
print("Match!")
else:
print("Not match!")
```
完整代码如下:
```python
import pygame
import random
# 游戏配置
config = {
'title': '连连看',
'icon': 'icon.png',
'width': 640,
'height': 480,
'bg_color': (255, 255, 255),
'pattern_width': 50,
'pattern_height': 50,
'pattern_gap': 10,
'patterns': ['1.png', '2.png', '3.png', '4.png', '5.png', '6.png', '7.png', '8.png']
}
# 初始化pygame
pygame.init()
# 设置游戏界面的大小
screen = pygame.display.set_mode((config['width'], config['height']))
# 设置游戏界面的标题和图标
pygame.display.set_caption(config['title'])
icon = pygame.image.load(config['icon'])
pygame.display.set_icon(icon)
# 加载图案
patterns = [pygame.image.load(pattern) for pattern in config['patterns']]
# 随机生成图案
random.shuffle(patterns)
def draw_board():
# 清空游戏界面
screen.fill(config['bg_color'])
# 绘制图案
for i in range(len(patterns)):
row = i // 4
col = i % 4
x = col * (config['pattern_width'] + config['pattern_gap']) + config['pattern_gap']
y = row * (config['pattern_height'] + config['pattern_gap']) + config['pattern_gap']
screen.blit(patterns[i], (x, y))
# 刷新游戏界面
pygame.display.update()
def select_pattern():
selected = []
while len(selected) < 2:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
col = x // (config['pattern_width'] + config['pattern_gap'])
row = y // (config['pattern_height'] + config['pattern_gap'])
index = row * 4 + col
if index not in selected:
selected.append(index)
draw_board()
pygame.time.wait(500)
return selected
def check_pattern(selected):
if patterns[selected[0]] == patterns[selected[1]]:
patterns.pop(selected[1])
patterns.pop(selected[0])
return True
else:
return False
# 游戏主循环
while True:
draw_board()
selected = select_pattern()
if check_pattern(selected):
print("Match!")
else:
print("Not match!")
```
阅读全文