第一次学习python,就此写了一个之前曾沉迷的4*4的拼图游戏,然而没有界面,全部通过输入命令完成。
规则:1、只能移动空白格周围的数字,并且移到空白格处 2、把数字按1-15拼接起来
以下是启动文件start.py
#coding = utf-8
#! python3
import puzzle
def game_intro():
print (
"This is a 4*4 puzzle game.\n"
+ "You can move the pieces around the blank piece.\n"
+ "Please input the site with the style - col raw(e.g. 1 2) if you want to move it \n"
)
def game_help():
print(
"e - exit the game\n"
+ "h - show this help\n"
+ "r - restart the game\n"
+ "s - show the puzzle\n"
)
def main():
puzzle_game = puzzle.Puzzle()
game_intro()
game_help()
print(str(puzzle_game))
site = raw_input("please input the site: ")
while "e" <> site:
if "h" == site:
game_help()
elif "r" == site:
puzzle_game.refresh()
print(str(puzzle_game))
elif "s" == site:
print(str(puzzle_game))
elif len(site) != 3 or not site[0].isdigit() or not site[2].isdigit() or site[1] <> " ":
print("please with the correct style")
elif not puzzle_game.move_block( int(site[0]), int(site[2]) ):
print("please with the correct site")
else:
print(str(puzzle_game))
if puzzle_game.if_finished():
print("congratulation!!")
break
site = raw_input("please input the site: ")
if __name__ == "__main__":
main()
puzzle.py
#coding = utf-8
import random
print ("has ")
def hello_world(str):
print ("hello world " + str)
return
class Puzzle:
__puzzleList = []
__len = 4
def __init__(self):
self.refresh();
return
'''
def __del__(self):
del self.__puzzleList
del self.__len
return
'''
def refresh(self):
self.__clear()
for index in range(self.__len * self.__len - 1):
self.__puzzleList.append(index+1)
random.shuffle(self.__puzzleList)
self.__puzzleList.append(0);
return
def __clear(self):
while len(self.__puzzleList) != 0:
self.__puzzleList.pop()
def __str__(self):
string = ""
for index in range(len(self.__puzzleList)):
if 0 != index and 0 == index % self.__len:
string += "\n"
if 0 == self.__puzzleList[index]:
string += " ".center(4)
#rjust or ljust
else:
string += str(self.__puzzleList[index]).center(4)
return string
def move_block(self,siteX,siteY):
site = (siteX-1) * self.__len + siteY - 1
is_move = True
if siteY < 1 or siteY > self.__len or siteX > self.__len or siteX < 1:
is_move = False
elif siteY != self.__len and 0 == self.__puzzleList[site + 1]:
self.__puzzleList[site + 1] = self.__puzzleList[site]
self.__puzzleList[site] = 0
elif siteY != 1 and 0 == self.__puzzleList[site - 1]:
self.__puzzleList[site - 1] = self.__puzzleList[site]
self.__puzzleList[site] = 0
elif siteX != 1 and 0 == self.__puzzleList[site - self.__len]:
self.__puzzleList[site - self.__len] = self.__puzzleList[site]
self.__puzzleList[site] = 0
elif siteX != self.__len and 0 == self.__puzzleList[site + self.__len]:
self.__puzzleList[site + self.__len] = self.__puzzleList[site]
self.__puzzleList[site] = 0
else:
is_move = False
return is_move
def if_finished(self):
for index in range(len(self.__puzzleList)):
if index + 1 != self.__puzzleList[index]:
return False
return True
有事没事可以玩一玩~