五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

學(xué)員寧嘉欣的高光時刻!

2023-07-23 17:30 作者:艮艮為山  | 我要投稿

? ? 經(jīng)過近一年的VBA編程學(xué)習(xí),學(xué)員寧嘉欣從零基礎(chǔ)到把我狂虐,不禁深深的被當(dāng)代大學(xué)生的聰明與智慧所折服!

? ? 事情的起因是這樣的(最后附上學(xué)員代碼及照片):

? ? 2023年7月18日晚上課時,我說:“今天做個2048游戲,在表格內(nèi)畫個4X4的游戲區(qū)域,增加兩個按鈕,一個是開始,一個是上,今天只寫上鍵的代碼?!?游戲界面如下圖:

2048游戲界面

? ? 我繼續(xù)說:“我以前寫的代碼分兩部分,一是先做合并,二是再做移動,那么,我們能不能用一步來完成合并和移動這兩個動作呢?”

? ? 然后我就和學(xué)員們一起寫起代碼來,我雖然做到了一步完成合并和移動這兩個動作,但代碼有50行之多,且包含非常多的判斷。非常的不如意!

? ? 此時學(xué)員寧嘉欣向我示意,她也完成了代碼,當(dāng)我看到她的代碼時,驚出了一身的冷汗,她只用了22行代碼就完成了任務(wù),且連隨機(jī)放置下一數(shù)也做好了。代碼如下:

寧嘉欣的代碼,注意:i為列,j為行

? ? 我問她:“你能給我講一下嗎?”

? ? 她簡單給我描述了一下原理,大意如下,她為了省去過多的、煩人的判斷,采用了數(shù)組與表格的互動方式進(jìn)行制作,先用數(shù)組arr取得游戲區(qū)域的數(shù)值,再將表格內(nèi)游戲區(qū)域的2-3行內(nèi)容清空,定義變量endRow用于取表格內(nèi)游戲區(qū)域最后一行的行號。然后判斷數(shù)組arr的當(dāng)前位置是否為空,不為空,就將內(nèi)容放置回表格的相應(yīng)位置,再判斷表格內(nèi)上下相鄰的兩個數(shù)是否相等,相等則相加,并清空多余的數(shù)。

? ? 看完她的代碼并運(yùn)行后,基本沒有什么錯誤,我就說,你試試224組合,如下圖:

224組合出現(xiàn)錯誤

? ? 結(jié)果出現(xiàn)了錯誤,原因當(dāng)然出在取最后一行的行號上。

? ? 沒想到,她很快就改好了代碼,只增加了一個判斷和一條語句:

? ? arr(endRow, i) <> 1? ??

? ? arr(endRow, i) = 1

更改后的代碼如下:

修改后的代碼

最后點(diǎn)評一下:

? ? 1、因?yàn)橛螒騾^(qū)域只剩第一行了,所以,內(nèi)循環(huán)為 2 to 4 ,這點(diǎn)非常的好;

? ? 2、使用endRow取最后一行的行號的方法是點(diǎn)睛之筆;

? ??

附上學(xué)員寧嘉欣的全部代碼:

Sub UP_Click()? ? ? '上鍵

? ? Dim i&, j&, endRow&

? ? arr = Range("a1:d4")

? ? Range("a2:d4").ClearContents

? ? For i = 1 To 4

? ? ? ? For j = 2 To 4

? ? ? ? ? ? endRow = Cells(Rows.Count, i).End(xlUp).Row

? ? ? ? ? ? If arr(j, i) <> "" Then

? ? ? ? ? ? ? ? If Cells(1, i) = "" Then

? ? ? ? ? ? ? ? ? ? Cells(endRow, i) = arr(j, i)

? ? ? ? ? ? ? ? Else

? ? ? ? ? ? ? ? ? ? Cells(endRow + 1, i) = arr(j, i)

? ? ? ? ? ? ? ? End If

? ? ? ? ? ? End If

? ? ? ? ? ? If Cells(endRow + 1, i) = Cells(endRow, i) And Cells(endRow, i) <> "" And arr(endRow, i) <> 1 Then

? ? ? ? ? ? ? ? Cells(endRow, i) = Cells(endRow, i) + Cells(endRow + 1, i)

? ? ? ? ? ? ? ? Cells(endRow + 1, i) = ""

? ? ? ? ? ? ? ? arr(endRow, i) = 1

? ? ? ? ? ? End If

? ? ? ? Next

? ? Next

? ? Call t

End Sub

Sub t()? ? ? ? ?'隨機(jī)放置一個2

? ? Dim i&, r&, c&, arr(1 To 16), js&

? ? For i = 0 To 15

? ? ? ? r = i \ 4 + 1

? ? ? ? c = i Mod 4 + 1

? ? ? ? If Cells(r, c) = "" Then

? ? ? ? ? ? js = js + 1

? ? ? ? ? ? arr(js) = i + 1

? ? ? ? End If

? ? Next

? ? If arr(1) = "" Then

? ? ? ? MsgBox "你輸了"

? ? Else

? ? ? ? i = arr(Rnd * (js - 1) + 1) - 1

? ? ? ? r = i \ 4 + 1

? ? ? ? c = i Mod 4 + 1

? ? ? ? Cells(r, c) = 2

? ? End If

End Sub

Sub kaishi()? ? ? ? '開始按鈕

? ? Dim i&

? ? Range("a1:d4").ClearContents

? ? For i = 1 To 8

? ? ? ? Call t

? ? Next

End Sub

最后附上學(xué)員照片:

寧嘉欣


學(xué)員寧嘉欣的高光時刻!的評論 (共 條)

分享到微博請遵守國家法律
府谷县| 贵定县| 夹江县| 左云县| 泰安市| 吉林省| 中西区| 平南县| 兴隆县| 申扎县| 进贤县| 贡觉县| 河池市| 凌云县| 安西县| 兴义市| 大洼县| 和龙市| 汝阳县| 白玉县| 汉源县| 台州市| 东阳市| 穆棱市| 鸡西市| 榆中县| 濮阳县| 若尔盖县| 江城| 武穴市| 郓城县| 当涂县| 沙田区| 长沙市| 东平县| 蕉岭县| 义乌市| 万安县| 务川| 巨野县| 西平县|