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組,結果就讓我寫乙個貪吃蛇作為二面前的任務。這我也沒寫過啊,就只好搜了一下別人的源 學習學習。我從這裡找的源 但真正的作者是這位。一百多行的 看下來,確實是學到了不少。首先是整體的演算...