python實現2048遊戲開發筆記

2021-08-27 18:26:01 字數 4407 閱讀 6211

一、遊戲描述

這裡省略了(估計來看的人都玩過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...