Python是一门常用的高级语言,越来越多的人用它开发出游戏或小程序。在这篇文章中,我将介绍几种以Python编写的小程序游戏。
1. “猜数字”游戏
猜数字是一种简单而又古老的游戏,也是最适合初学者用Python语言去编写的游戏。玩家需要猜测程序随机生成的数字,直到猜对为止。这个小程序的思路比较简单,需要一个随机数生成器、用户输入以及数据比较函数。代码如下:
```python
import random
rand_num = random.randint(1, 100)
count = 0
while True:
count += 1
print("请输入你猜测的数字:")
guess = int(input())
if guess == rand_num:
print("恭喜你,猜对了!你用了", count, "次猜中了这个数字。")
break
elif guess < rand_num:
print("你猜的数字偏小了。")
else:
print("你猜的数字偏大了。")
```
2. 扫雷游戏
扫雷是一款很多人都很喜欢的经典游戏,同样很适合用Python来开发。在这个游戏里,玩家需要猜测哪些格子是安全的,而哪些格子是有地雷的。这个小程序包括棋盘的生成、雷的布置、胜负判断等操作。代码如下:
```python
import random
class MineSweeper:
def __init__(self, width=8, height=8, num_of_mines=10):
self.width = width
self.height = height
self.num_of_mines = num_of_mines
self.board = []
self.setup()
def setup(self):
self.board = [[0 for _ in range(self.width)] for _ in range(self.height)]
for _ in range(self.num_of_mines):
x, y = random.randint(0, self.width-1), random.randint(0, self.height-1)
while self.board[y][x] == -1:
x, y = random.randint(0, self.width-1), random.randint(0, self.height-1)
self.board[y][x] = -1
def check(self, x, y):
if self.board[y][x] == -1:
return False
count = 0
for i in range(max(y-1, 0), min(y+2, self.height)):
for j in range(max(x-1, 0), min(x+2, self.width)):
if self.board[i][j] == -1:
count += 1
if count == 0:
for i in range(max(y-1, 0), min(y+2, self.height)):
for j in range(max(x-1, 0), min(x+2, self.width)):
if i != y or j != x:
self.check(j, i)
self.board[y][x] = count
return True
def play(self):
while True:
for row in self.board:
print(" ".join([str(i) for i in row]))
print("请猜测哪些格子是安全的,输入x,y即可(例如:3,4):")
guess = input().split(',')
x, y = int(guess[0]), int(guess[1])
if not self.check(x, y):
print("很遗憾,你踩雷了!")
break
elif sum(row.count(0) for row in self.board) == self.num_of_mines:
for row in self.board:
print(" ".join([str(i) for i in row]))
print("恭喜你成功扫雷!")
break
```
3. “2048”游戏
“2048”是一种经典的数字游戏,在一个4x4的网格中移动数字,将相同的数字合并,直到有一个数字达到2048为止。这个程序的核心思路就是棋盘的管理、数字的移动以及合并等操作。代码如下:
```python
import random
class Game2048:
def __init__(self):
self.board = []
self.score = 0
self.game_over = False
self.setup()
def setup(self):
self.board = [[0 for _ in range(4)] for _ in range(4)]
self.score = 0
self.game_over = False
# Randomly place 2 blocks
self.add_block()
self.add_block()
def print_board(self):
for row in self.board:
print(row)
def add_block(self):
empty_blocks = [(x, y) for x in range(4) for y in range(4) if self.board[y][x] == 0]
if empty_blocks:
x, y = random.choice(empty_blocks)
self.board[y][x] = 2 if random.random() < 0.9 else 4
else:
self.game_over = True
def slide(self, row):
# Remove all zeroes in the row
new_row = [num for num in row if num != 0]
# Merge identical numbers together
for i in range(len(new_row)-1):
if new_row[i] == new_row[i+1]:
new_row[i], new_row[i+1] = new_row[i]*2, 0
self.score += new_row[i]
# Remove zeroes in the row again
new_row = [num for num in new_row if num != 0]
# Add zeroes to the right end of the row
new_row += [0]*(4-len(new_row))
return new_row
def move(self, direction):
if not self.game_over:
if direction == "left":
self.board = [self.slide(row) for row in self.board]
elif direction == "right":
self.board = [self.slide(row[::-1])[::-1] for row in self.board]
elif direction == "up":
self.board = [list(col) for col in zip(*self.board)]
self.board = [self.slide(row) for row in self.board]
self.board = [list(col) for col in zip(*self.board)]
elif direction == "down":
self.board = [list(col[::-1]) for col in zip(*self.board)]
self.board = [self.slide(row) for row in self.board]
self.board = [list(col[::-1]) for col in zip(*self.board)]
else:
print("Invalid direction!")
return
self.add_block()
if self.game_over:
print("Game Over!")
```
综上所述,这里介绍了三个基于Python编写的小程序游戏,它们分别是猜数字、扫雷和2048。虽然这些程序比起商业游戏而言功能比较简单,但也非常有趣,并且包含了许多有趣的程序设计思路。如果你是Python的初学者,这些小程序游戏将是你练习Python编程的不错选择。