一、遊戲描述
這裡省略了(估計來看的人都玩過2048遊戲)
二、遊戲設計
首先將遊戲分解成若干個區域性一一實現
(1)輸入規則:asdw分別代表左下由上,r為reset,q為退出,其他不執行。
(2)輸出介面:
def display():
for i in range(4):
print('+----+----+----+----+')
for j in range(4):
print('| %3s'%(notzero(matix[i][j])),end = '')
print('| ')
print('+----+----+----+----+')
(3)初始化
(4)上移
(5)下移
(6)左移
(7)右移
(8)判斷遊戲是否結束
三、**
import random
#score是乙個全域性變數,記錄分數
score = 0
# 紀錄遊戲的分數
matix = [[0 for i in range(4)] for i in range(4)]
# 初始化生成乙個4*4的列表
def notzero(s):
return s if s != 0 else ''
def display():
for i in range(4):
print('+----+----+----+----+')
for j in range(4):
print('| %3s'%(notzero(matix[i][j])),end = '')
print('| ')
print('+----+----+----+----+')
def init():
# 初始化矩陣
initnumflag = 0
while 1:
k = 2 if random.randrange(0, 10) > 1 else 4
# 隨機生成 2 或 4
s = divmod(random.randrange(0, 16), 4)# 生成矩陣初始化的下標
if matix[s[0]][s[1]] == 0:
# 只有當其值不為0的時候才賦值,避免第二個值重複
matix[s[0]][s[1]] = k
initnumflag += 1
if initnumflag == 2:
break
display()
def addrandomnum():
#處理完移動後新增乙個新的隨機數
while 1:
k = 2 if random.randrange(0, 10) > 1 else 4
s = divmod(random.randrange(0, 16), 4)
#函式把除數和餘數運算結果結合起來,返回乙個包含商和餘數的元組(a // b, a % b)。
if matix[s[0]][s[1]] == 0:
matix[s[0]][s[1]] = k
break
display()
def check():
#檢查遊戲是否結束
for i in range(4):
for j in range(3):
if matix[i][j] == 0 or matix[i][j] == matix[i][j + 1] or matix[j][i] == matix[j + 1][i]:
return true
# true就是沒有結束
else:
return false
def moveright():
# 向右移動處理函式
global score
for i in range(4):
for j in range(3, 0, -1):
for k in range(j - 1, -1, -1):
if matix[i][k] > 0:
if matix[i][j] == 0:
matix[i][j] = matix[i][k]
matix[i][k] = 0
elif matix[i][j] == matix[i][k]:
matix[i][j] *= 2
score += matix[i][j]
#將當前數作為score加上
matix[i][k] = 0
break
addrandomnum()
def moveup():
global score
for i in range(4):
for j in range(3):
for k in range(j + 1, 4):
if matix[k][i] > 0:
if matix[j][i] == 0:
matix[j][i] = matix[k][i]
matix[k][i] = 0
elif matix[k][i] == matix[j][i]:
matix[j][i] *= 2
score += matix[j][i]
matix[k][i] = 0
break
addrandomnum()
def movedown():
global score
for i in range(4):
for j in range(3, 0, -1):
for k in range(j - 1, -1, -1):
if matix[k][i] > 0:
if matix[j][i] == 0:
matix[j][i] = matix[k][i]
matix[k][i] = 0
elif matix[j][i] == matix[k][i]:
matix[j][i] *= 2
score += matix[j][i]
matix[k][i] = 0
break
addrandomnum()
def moveleft():
global score
for i in range(4):
for j in range(3):
for k in range(1 + j, 4):
if matix[i][k] > 0:
if matix[i][j] == 0:
matix[i][j] = matix[i][k]
matix[i][k] = 0
elif matix[i][j] == matix[i][k]:
matix[i][j] *= 2
score += matix[i][j]
matix[i][k] = 0
break
addrandomnum()
def main():
print(" \033[33;1mwelcome to the game of 2048!\033[0m")
flag = true
init()
while flag:
#迴圈的標誌
print(' \033[33;1m you score:%s' % (score))
d = input(' (↑:w) (↓:s) (←:a) (→:d),q(uit) :\033[0m')
#不斷處理使用者輸入
if d == 'a':
moveleft()
if not check():
print('遊戲結束')
flag = false
#遊戲結束的話直接退出
elif d == 's':
movedown()
if not check():
print('遊戲結束')
flag = false
elif d == 'w':
moveup()
if not check():
print('遊戲結束')
flag = false
elif d == 'd':
moveright()
if not check():
print('遊戲結束')
flag = false
elif d == 'q':
# 退出
break
else:
# 對使用者的其他輸入不做處理
pass
if __name__ == '__main__':
main()
js實現2048小遊戲
頁面class hidden id end id endspan id table colspan 4 id s1 id s2 id s3 id s4 id s5 id s6 id s7 id s8 id s9 id s10 id s11 id s12 id s13 id s14 id s15 id...
JavaScript實現2048小遊戲
首先要明白該遊戲怎麼玩,即 在 4 4 的16宮格中,您可以選擇上 下 左 右四個方向進行操作,數字會按方向移動,相鄰的兩個數字相同就會合併,組成更大的數字,每次移動或合併後會自動增加乙個數字。當16宮格中沒有空格子,且四個方向都無法操作時,遊戲結束。這部分是通過類名emptyitem及nonemp...
C 實現2048小遊戲
1 define crt secure no warnings 去掉編譯器內部擴增問題 2 include3 include4 include5 include 6 include7 include8 include 9 include10 include11 include12 using nam...