用C語言開發NES遊戲(CC65)08 背景 碰撞

2021-10-05 17:43:09 字數 708 閱讀 7465

背景和精靈有些區別,我們無法讀取ppu中的位元組。

我們先搞個地圖,每個塊大小是 16x16,填充整個背景需要 240位元組的陣列。x從0-15,y從0-14。我們把陣列放到ram中,以防止被修改。

後面演示運**況,先看下陣列結構。

const unsigned char c2 = ;

現在,我編寫了一些**,將乙個2×2塊的塊列印到螢幕上,使用了乙個大的迴圈,裡面用了vram_put()方法。

使用vram_put()前需要先關閉螢幕,寫入ppu是以從左到右,然後下一行開始從左到右。這樣你可以很簡單的就寫完整個螢幕。

start按鍵可以切換下乙個地圖顯示

當你按右的時候,x的位置會+1,然後檢測4個碰撞點,如果發生碰撞則會結束向右移動(x會-1)

(翻譯備註:作者用 座標變換後的點去檢測碰撞,發生碰撞就退回變化,如果沒有碰撞,精靈就會按照變化後的點移動--也就是重新繪製精靈新的位置)

測試:按方向撞牆,碰撞可以生效。按start按鈕,背景變化,碰撞依舊有效,因為ram載入了乙個新的地圖碰撞檢測。

注意:我使用螢幕滾動的方式將整個背景向下移動了1個畫素。y scroll=ff(-1),因為精靈總是會向下移動乙個畫素,所以必須將背景整體下移1個畫素。

地圖載入部分的**寫的不是很好,因為只能繪製一種貼圖塊,而且屬性表不會修改,稍後我會介紹乙個更好的載入方式(11、metatiles),在此之前我先說一下滾動。

用C C 語言開發大規模FPGA

背景 可程式設計邏輯器件的設計方法經歷了布林等式,原理圖輸入,硬體描語言這樣乙個發展過程。隨著設計的日益複雜和可程式設計邏輯器件規模的不斷擴大,人們不停地尋求更加抽象的行為級設計方法,以便在盡可能短時間內完成自己的設計構思。現狀與問題 今天,在電子設計領域形成了這樣一種分工 軟體和硬體,相應工程師也...

用c語言演繹「生命遊戲」

本世紀70年代,人們曾瘋魔一種被稱作 生命遊戲 的小遊戲,這種遊戲相當簡單。假設有乙個像棋盤一樣的方格網,每個方格中放置乙個生命細胞,生命細胞只有兩種狀態 生 或 死 遊戲規則如下 1 如果乙個細胞周圍有3個細胞為生 乙個細胞周圍共有8個細胞 則該細胞為生,即該細胞若原先為死,則轉為生,若原先為生,...

用C語言實現(掃雷遊戲)

include include include include pragma warning disable 4996 define rows 8 define cols 8 define mines 62 void menu 列印選單 void init mine char mine cols 2...