色偷偷亚洲精品一区-色偷偷五月天-色偷偷久久一区二区三区-色偷偷狠狠色综合网-国产99久9在线视频-国产99久9在线

/ EN
13922884048

技術交流

Technology Exchange
/
/

二次元英雄的戰斗:RP2040版“雷霆戰機”來襲!

發布時間:2025-07-10作者來源:薩科微瀏覽:675

在數字創意與復古情懷交織的浪潮中,一款基于RP2040游戲機的獨特小游戲悄然誕生——《東百往事雷霆戰機》。這不僅是一次簡單的編程實踐,更是一場充滿趣味與挑戰的創意之旅。在這里,二次元角色虎醬踏上拯救徒弟的冒險,面對殺馬特軍團的重重阻礙,玩家將通過RP2040的搖桿、按鍵操作,體驗緊張刺激的射擊與躲避。從游戲設計的巧妙構思到硬件功能的靈活運用,再到代碼實現的精細打磨,每一個環節都凝聚著創作者的智慧與熱情。接下來,讓我們深入探索這款小游戲背后的故事,感受科技與創意碰撞出的火花,解鎖嵌入式開發的無限可能。

?

?

項目介紹

?

  • 游戲背景

“我徒弟呢?”虎醬徒弟慘遭殺馬特軍團綁架。為拯救徒弟,虎醬單刀赴會,一人單挑眾殺馬特士兵。此時,baby的殺馬特軍團長駕駛“反虎”式坦克,攔在虎醬面前。“殺馬特軍團長,你就是歌姬吧!”虎醬該如何處理這場危機?盡在《雷霆戰機小游戲之東百往事》……

  • 游戲介紹 


1.主角FknJJG9bLIpp6acb8Z8T7dSDJ17Y

二次元虎醬,背負著徒弟被綁架的血海深仇,使用遠程[敏感詞],一人單挑一眾殺馬特!虎醬受FW刀庇護,全程獲得“不滅”特性,像素大小40*40,為了省事作者沒有設計“好果汁”,二次元虎醬無法進化。


2. 反派介紹

FtBfgGbIxl2luGfxeHFuzC_jDQo9Fi1VlrgH7h07Uv5uSJ3rqkUqvJ_oFimBFxDz7g4Sy6Bllt-ru0WPGk5F殺馬特士兵,不能觸碰,不能攻擊的龍套。像素大小20*20,血量隨機1-3滴血。


FvlUE-RN7qIulejKcEZgpVc9Fyx0“反虎”式坦克殺馬特軍團長專為對抗虎醬開發的利器,可發射藍色激光炮,不可觸碰。像素大小40*40,血量5滴。


3.玩法介紹

像普通的雷霆戰機一樣玩耍。


游戲總共只有兩關,采用積分制(為了節約空間沒有在屏幕中展示),[敏感詞]關只有殺馬特士兵,分數超過十分進入第二關;第二關有“反虎”式坦克,同樣采用積分制,分數超過10分游戲結束。每打敗一個殺馬特士兵或 “反虎”式坦克均只加一分。

?

?

設計思路

?

FiouJbUA8yQXHYrVqDP5adLS6I-O

 

?

?

硬件介紹

?

雖然板子的功能很多,但是我只用了一些基礎板塊:搖桿、按鍵、蜂鳴器、屏幕。沒什么可說的。本來想把mma7660結合進游戲,通過游戲機的擺動控制游戲,后來懶得搞就鴿了。

?

?

代碼說明

?

  • 虎醬、殺馬特士兵、坦克、子彈等類的定義

幾種類的定義大致相似,而虎醬的類的定義較為豐富,以虎醬的類做說明。

    class Player():    def __init__(self):        #hardware.tft.fill_rect(95, 200, 40,  40, color_cfg.blue)        self.bgm = p_music(p_music.song1, tempo=1, duty=500, pins=[            Pin(game_kit.buzzer, Pin.OUT)])        self.left=105        self.top=210        self.leo=105        self.too=210        self.cenx=self.left+20        self.ceny=self.top+20        self.r = 20        self.speedx = 0        self.speedy = 0        self.haskey = False        self.k1 = button(game_kit.key_a, self.k1_callback)        self.k2 = button(game_kit.key_b, self.k2_callback)    '''    def getch(self):        if self.haskey:            self.haskey = False            return self.k        else:            return None    '''

    首先進行初始化,仿照了貪吃蛇以及簡書用戶_豆約翰_的雷霆戰機的部分代碼,定義了背景音樂,為了更新位置后清除原圖像,定義leo(left old)和too(top old),定義移動速度speedx和speedy,定義按鍵用于發射子彈與開啟關閉背景音樂。定義射擊函數與A鍵執行函數,按下A鍵發射子彈。

       def shoot(self):        if len(bullets)<4:            bullet = Bullet(self.left+20, self.top)            bullet.exit=True            bullets.append(bullet)        elif bullets[0].exit==False:            bullets[0] = Bullet(self.left+20, self.top-8)        elif bullets[1].exit==False:            bullets[1] = Bullet(self.left+20, self.top-8)        elif bullets[2].exit==False:            bullets[2] = Bullet(self.left+20, self.top-8)        elif bullets[3].exit==False:            bullets[3] = Bullet(self.left+20, self.top-8)

      定義搖桿方向檢驗函數,更新虎醬位置坐標。

          def k1_callback(self, p):        self.shoot()    def k2_callback(self, p):        print("你就是歌姬吧")        self.bgm.toggle_pause()    def dir_select(self):        #key = self.getch()        self.leo=self.left        self.too=self.top        xValue = xAxis.read_u16()        yValue = yAxis.read_u16()        if xValue <1000:            self.speedx=-(int)(pow((33000-xValue)/32400,2)*8)        elif xValue >40000:            self.speedx=(int)(pow((xValue-33000)/32000,2)*8)        self.left +=self.speedx        if yValue <1000:            self.speedy=-(int)(pow((33000-yValue)/32400,2)*8)        elif yValue >40000:            self.speedy=(int)(pow((yValue-33000)/32000,2)*8)        self.top +=self.speedy        if self.left > 200:            self.left = 200        elif self.left < 0:            self.left = 0        if self.top > 200:            self.top = 200        elif self.top < 0:            self.top = 0        self.speedx=0        self.speedy=0        self.cenx=self.left+20        self.ceny=self.top+20
        • 碰撞檢測函數

          def colliDect(lev):    global score1    for mob in mobs[:]:        for bullet in bullets[:]:            if (mob.ceny<=bullet.top and \((mob.cenx-bullet.left)**2+(mob.ceny-bullet.top)**2)<=81) \or (bullet.top<mob.ceny and (bullet.top+8)>mob.ceny \and abs(mob.cenx-bullet.left)<8) or ((bullet.top+8)<=mob.ceny \and ((mob.cenx-bullet.left)**2+(mob.ceny-8-bullet.top)**2)<=81):                bullet.exit=False                mob.blood=mob.blood-1                if mob.blood<=0:                    mob.blood=random.randrange(1,3)                    mob.left=random.randrange(0,231)                    mob.top=random.randrange(0, 10)                    mob.cenx=mob.left+8                    mob.ceny=mob.top+8                    mob.speedx = random.randrange(-3, 3)                    mob.speedy = random.randrange(1, 8)                    k=random.randrange(0, 3)                    mob.buf = smabuf[k]                    print("你狗屁才藝")                    score1+=1    for bullet in bullets[:]:            if lev==2 and(                Tank.ceny<=bullet.top and \((Tank.cenx-bullet.left)**2+(Tank.ceny-bullet.top)**2)<=81) \or (bullet.top<Tank.ceny and (bullet.top+8)>Tank.ceny \and abs(Tank.cenx-bullet.left)<8) or ((bullet.top+8)<=Tank.ceny \and ((Tank.cenx-bullet.left)**2+(Tank.ceny-8-bullet.top)**2)<=81):                bullet.exit=False                Tank.blood-=1                if Tank.blood<=0:                    Tank.left=60                    Tank.top=0                    Tank.leo=60                    Tank.too=0                    Tank.cenx=Tank.left+20                    Tank.ceny=Tank.top+20                    Tank.r = 20                    Tank.speedx = 1                    Tank.speedy = 0                    Tank.tanknum=0                    Tank.fx=Tank.cenx                    Tank.fy=Tank.ceny                    Tank.blood=5                    print("你狗屁才藝")                    score1+=1    if ((mob.cenx-player.cenx)**2+(mob.ceny-player.ceny)**2)<=625 or (lev==2 and Tank.fx>=player.left and Tank.fx<=(player.left+40)):            print("我是個傻逼")

          為了計算簡便,將殺馬特士兵、虎醬和坦克分別視為具有一定半徑的圓形,方便計算。

          ?

          ?

          項目總結

          ?

          • 無限子彈精靈組問題

          原思路是做一個子彈精靈組,每按下精靈組增加一個子彈精靈,當該子彈打中物塊或者墻壁后刪除,但是這樣會造成該組長度非常長,非常不適合編寫。于是我采用初始化四個子彈精靈,游戲從頭至尾都是這四個子彈精靈,同一畫面中不會出現第五顆子彈,非常方便,而且幾乎不影響游戲體驗。

          同理,殺馬特精靈也是從頭至尾只有三個,循環更新參數作為新人物登場。


          • 人物設計問題

          不算大問題,但是折磨了我好幾天,一開始嘗試使用截圖用img2Lcd轉bin,效果不好。決定自己畫圖但是沒下載Ps也沒用過。

          與百度達成深度合作了解到了galeportable像素圖片繪制軟件。我的人物精靈圖片都是自己繪制導出的,可以用image2Lcd轉bin文件。

          免責聲明:本文采摘自“電子森林”,本文僅代表作者個人觀點,不代表薩科微及行業觀點,只為轉載與分享,支持保護知識產權,轉載請注明原出處及作者,如有侵權請聯系我們刪除。

          服務熱線

          0755-83044319

          霍爾元件咨詢

          肖特基二極管咨詢

          TVS/ESD咨詢

          獲取產品資料

          主站蜘蛛池模板: 暖暖日本 在线 高清 | 国产 浪潮AV性色四虎 | 男人的天堂久久精品激情a 男人的天堂黄色片 | 在线一本码道高清 | 嗯啊…跟校草在教室里做h 嗯 用力啊 嗯 c我 啊哈老师 | 男女爽爽无遮挡午夜视频在线观看 | 午夜理论在线观看不卡大地影院 | 2020年国产精品午夜福利在线观看 | 成人精品视频网站 | 新妺妺窝人体色WWW 新金梅瓶玉蒲团性奴3 | 欧美乱妇15p图 | 巨乳中文无码亚洲 | 日本午夜福利无码高清 | 欧美精品中文字幕亚洲专区 | 久久中文字幕亚洲精品最新 | 狠狠撸亚洲视频 | 国产亚洲精品影视在线 | 久久精品国产免费中文 | 亚洲三级黄色片 | 久久高清一级毛片 | 青娱乐视觉盛宴国产视频 | 一本道dvd久久综合高清免费 | 97色伦97色伦国产 | 俄罗斯黄色大片 | 我和黑帮老大第365天第2季在线 | 四虎影院网红美女 | 99精品免费久久久久久久久日本 | 琪琪SEE色原网色原网站18 | 女人高潮了拔出来了她什么感觉 | 国内精品七七久久影院 | 色妞色视频一区二区三区四区 | 久久电影精品久久99久久 | 色婷婷五月综合中文字幕 | 男女啪啪久久精品亚洲A | 色综合伊人色综合网站中国 | 久久精品亚洲视频 | 中文字幕人成乱码中国 | 亚洲男人片片在线观看 | 国产精品女上位在线观看 | 久久午夜夜伦痒痒想咳嗽P 久久午夜夜伦鲁鲁片无码免费 | AV午夜午夜快憣免费观看 |