Lua 棋牌遊戲開發(概念性設計一)

2021-10-07 05:48:35 字數 3914 閱讀 4533

回顧上節課的提問:上節課的部落格鏈結

1.lua的八大資料型別:

2.ipairs和pairs的區別:

3.table的引用型別:

4.點與冒號的區別:冒號的第乙個引數預設為self,指向呼叫該函式的表

local tb = 

local tb1 = {}

tb1 = tb

tb1.x = 20

print(tb.x) -- 20

1:牌概念性設計

描述一張牌:使用十六進製制(十位表示花色,個位表示點數)

花色:紅黑梅方王(0 - 4)

點數:a - k(1 - 13)

牌值:對應的大小順序排列(3 - k:3 - 13 a:14 2:16 小王:18 大王:19)

紅桃: k:0x0d

黑桃:a:0x11

2:建立一副牌

local cardutils = {} – 牌的工具類

--

1.建立一副牌

function cardutils:

newcards()

-- 返回54張牌

return

end

3:求牌的花色
--

2.求牌的花色

function cardutils:

getcardcolor

(card)

return math.

floor

(card /

0x10

)end

4:求牌的點數
function cardutils:

getcardpoint

(card)

return card %

0x10

end

5:判斷是否是王牌
function cardutils:

isjoker

(card)

return

4== self:

getcardcolor

(card)

end

6:求牌的牌值
function cardutils:

getcardvalue

(card)

local point = self:

getcardpoint

(card)

-- 獲得點數

if self:

isjoker

(card) then -- 如果是王牌

if1== point then--

0x41小王

return

18else

return

19 end

endif

1== point then --

areturn

14 elseif 2

== point then --

2return

16else

return point --3-

k end

end

7:洗牌
function cardutils:

shuffle

(allcards)

for i =

1,#allcards do

local j = math.

random(1

,#allcards)

allcards[i]

,allcards[j]

= allcards[j]

,allcards[i]

endend

8:發牌
function cardutils:

sendcards

(allcards)

local handcards =

for i =1,

3dohandcards[i]

=for j =1,

17do

local card = table.

remove

(allcards)

table.

insert

(handcards[i]

,card)

endend

return handcards

end

9:副牌排序
function cardutils:

sort

(handcards)

table.

sort

(handcards,

function

(card1,card2)

local value1 = self:

getcardvalue

(card1)

local value2 = self:

getcardvalue

(card2)

local color1 = self:

getcardcolor

(card1)

local color2 = self:

getcardcolor

(card2)

-- 先比較牌值

if value1 ~

= value2 then

return value1 > value2

else

-- 再比較花色

return color1 > color2

endend)

end

10:列印整副牌
function cardutils:

print

(handcards)

local s =

""for i =

1,#handcards do

-- local color = self:

getcardcolor

(handcards[i]

)-- local point = self:

getcardpoint

(handcards[i]

) s = s .

.string

.format

("0x%02x"

,handcards[i]).

." "

endprint

(s)end

11:測試函式
math.

randomseed

(os.

time()

)-- 測試

--1.建立一副新牌

local allcards = cardutils:

newcards()

--2.洗牌

cardutils:

shuffle

(allcards)

--3.發牌

local handcards = cardutils:

sendcards

(allcards)

----

4.對第乙個玩家的牌排序

cardutils:

sort

(handcards[1]

)----5.列印第乙個玩家的牌

cardutils:

print

(handcards[1]

)return cardutils --y用於其他類呼叫返回

如何開發一款棋牌遊戲?棋牌遊戲平台搭建

關於如何開發一款自己的棋牌遊戲專案 目前只說棋牌客戶端 就說說自己的個人觀點,自己yy的,不喜勿噴。首先,要做一款遊戲,如果你要做一款有網路的棋牌遊戲,有使用者資料儲存的,那麼首先就要有乙個伺服器,然後我們才能基於unity開發的這個棋牌客戶端去跟伺服器通訊,如果是做單機,那麼就請忽略這第一步 我們...

第乙個概念性的 Oracle 蠕蟲

oracle 的眾多漏洞有被更大範圍惡意利用的傾向。10 月 31 日,有乙個匿名者在 full disclosure fd 郵件列表裡投遞了一篇名為 trick or treat larry 很明顯是對 larry ellison 的乙個小玩笑 的郵件。完全用 pl sql 寫的蠕蟲就這樣出現了。...

遊戲開發中的概念設計

上次錄完 日式美學小記 之後,小路邀請到了一位做遊戲設計和開發的朋友品,這次就請他來聊一聊概念設計和遊戲開發。不怕大家笑話,我是乙個寫字 因為這個被老師從小學罵到大學 和畫畫 學到素描就徹底放棄 都特別差的人,一直以來都特別羨慕會畫畫的人。看了下品在微博發的圖,感覺到了深深的羨慕和嫉妒,同樣是手,我...