彙編寫貪吃蛇筆記

2021-09-24 05:16:32 字數 1116 閱讀 7030

ide:visualstudio 2019, sams

貪吃蛇看起來比較簡單,實際上想實現貪吃蛇的移動之類的還是有難度(這裡就懶得自己想了

所以特地baidu了貪吃蛇的c++**,發現一般都是用雙鏈表實現的貪吃蛇類。

首先想法是控制台顯示的東西是利用遍歷二維的字元陣列

然後發現不知道c++二維陣列的分布規律

於是寫了個test利用vs2019的記憶體檢視來找規律

如下圖將c++傳入的二維陣列移動到暫存器eax中

【懶得發圖了】

可以看出eax的值為0x0151 2c90然後利用記憶體檢視器檢視位址

可以發現有效的位址明明位於0x01512d07位置的第7個,然後我口算了一下發現

0x01512d07 + 7 - 0x01512c90 的值剛好是十進位制的128即2的八次方減一

這不就是八位嘛!

那麼給eax + 128 就是實際位址了

至於位址與資料大小…這類的這裡就不詳講了

;獲得二維陣列的某位的值

getdoublechararrvalue proc uses ebx , chararr:ptr dword, arrrow:dword , getcol:dword, getrow:dword

mov ebx, chararr

add ebx,

128;列數*i+j+

9 mov esi, arrrow

imul esi, getcol

add esi, getrow

add esi,

9 movsx eax, byte ptr [ebx+esi]

;得到chararr[getcol]

[getrow]

retgetdoublechararrvalue endp

2019-06-07更新

上面全當口胡

新的發現

其實不動態分配的陣列

a[i][j]即是列數*i+j就這麼簡單

然後如果用到物件導向的原理建立結構體

那麼位址會是怎麼分配的呢?

貪吃蛇筆記

1.用image新增button元件代替button 2.控制物體移動不一定要寫在方法裡,可以用invokerepeating 方法,想要修改變數時可以cancelinvoke 先暫停再修改 3.食物的隨機生成可以讓每次生成的食物的用陣列儲存 然後獲取元件替換。4.單例模式,用於吃完食物後生成新食物...

C 編寫貪吃蛇遊戲 RedSnake

開發環境 microsoft visual studio net 2003 開發語言 c 開發者 red angelx 程式介面如圖一所示圖一 主介面左邊是遊戲區域,由乙個 picturebox 和lable 組成,picturebox 用來繪製遊戲介面,label 用來顯示遊戲是否執行。右邊是狀態...

貪吃蛇學習筆記 C

事情是這樣的,我上的大學裡有個和微軟合作的俱樂部,面向大一招新的時候我去參加了一面,面試完acm組又去了一下game組,結果就讓我寫乙個貪吃蛇作為二面前的任務。這我也沒寫過啊,就只好搜了一下別人的源 學習學習。我從這裡找的源 但真正的作者是這位。一百多行的 看下來,確實是學到了不少。首先是整體的演算...