加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

上班摸魚(yú)?C語(yǔ)言玩魂斗羅!

08/27 10:40
1526
閱讀需 12 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

來(lái)源:公眾號(hào)【魚(yú)鷹談單片機(jī)】,作者:魚(yú)鷹Osprey

最近玩了docker,發(fā)現(xiàn)真的很方便,和Java 、Python這種類似,一次寫(xiě)好,到處運(yùn)行。

雖然是一項(xiàng)技術(shù),也是工作技能,但只是工作怎么行,閑暇之余,還是可以用來(lái)摸摸魚(yú)的。

比如用來(lái)玩玩魂斗羅、超級(jí)瑪麗,只要是nes游戲,應(yīng)該都支持。

雙人模式下,目前數(shù)字鍵使用的是小鍵盤(pán)。

nes-dockerfile 文件

FROM ubuntu:18.04 as builder
MAINTAINER Osprey
#docker build -f nes-dockerfile -t nes.osprey.io/nes-build-run .
# docker start nes-build # docker attach nes-build # docker exec -it  nes-build  /bin/bash

# 創(chuàng)建用戶 cmd:idARG USERNAME=ospreyARG USER_UID=1000ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME     && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME         && apt-get update     && apt-get install -y sudo     && echo $USERNAME ALL=(root) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME     && chmod 0440 /etc/sudoers.d/$USERNAME
RUN apt-get update# for cmd: add-apt-repositoryRUN apt -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificatesRUN add-apt-repository ppa:xmake-io/xmake -y && apt-get update && apt-get install -y xmakeRUN?apt-get?install?-y?libsdl2-dev
RUN apt-get install -y git make gcc # optionRUN  apt-get install -y nano iputils-ping# setting the password of root to 123456RUN echo 'root:123456' | chpasswd
USER $USERNAMEENV HOME=/home/$USERNAME
RUN mkdir /home/$USERNAME/work
WORKDIR /home/$USERNAME/work
RUN git clone https://gitee.com/Dozingfiretruck/nes && cd nes && xmake

###########################################FROM ubuntu:18.04 as prod
#設(shè)置時(shí)區(qū)ENV TZ=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 創(chuàng)建用戶 cmd:idARG USERNAME=ospreyARG USER_UID=1000ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME     && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME         && apt-get update     && apt-get install -y sudo     && echo $USERNAME ALL=(root) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME     && chmod 0440 /etc/sudoers.d/$USERNAME
RUN apt-get updateRUN apt-get install -y p7zip-full libsdl2-dev
USER $USERNAMEENV HOME=/home/$USERNAME
RUN mkdir /home/$USERNAME/workWORKDIR /home/$USERNAME/workRUN echo "PS1='[e[0;33m]u@h[e[0m]:[e[0;34m]w[e[0m]$ '" >> /home/$USERNAME/.bashrc
COPY --from=0 /home/$USERNAME/work/nes/build/linux/x86_64/release/nes .COPY contra.nes .COPY SuperMarioBrosWorld.nes .#CMD ["~/work/nes contra.nes"]
# run cmd:#?docker?run?--name=nes-test?--rm?-it?-v?/tmp/.X11-unix:/tmp/.X11-unix?-v?/dev/snd:/dev/snd?--privileged?-e?DISPLAY=unix$DISPLAY?nes.osprey.io/nes-build-run?/bin/bash?-c?"./nes?contra.nes"

編譯命令(前提是安裝好docker,參考:docker通用安裝使用指南-Ubuntu-樹(shù)莓派5):

docker build -f nes-dockerfile -t nes.osprey.io/nes-build-run .

摸魚(yú)指令(nes-build-run 由前面的命令生成)

docker run --name=nes-test --rm -it -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/snd:/dev/snd --privileged -e DISPLAY=unix$DISPLAY nes.osprey.io/nes-build-run /bin/bash -c "./nes contra.nes"

如果有新的 nes 游戲,可以拷貝到容器中后,再進(jìn)入容器中運(yùn)行該文件

docker?cp?xx.nes?nes-test:/home/osprey/nes

最后為了更好的摸魚(yú),可以配合vscode使用,隨時(shí)隨地打開(kāi)模擬器摸魚(yú),爽歪歪。

ubuntu18 以下版本只能下載v1.85的deb 文件,最新版本安裝不了(其他版本安裝最新的vscode就行):

https://update.code.visualstudio.com/1.85.2/linux-deb-x64/stable

安裝deb文件

sudo dpkg -i code_1.85.2-1705561292_amd64.deb

vscode打開(kāi) nes,

#?forkr from https://gitee.com/Dozingfiretruckgit?clone?https://gitee.com/embeddedosprey/nes -b docker#?docker?分支目前含有編譯好的鏡像?nes-build-run?565M,直接使用?load?命令導(dǎo)入即可code nes#?如果是自己導(dǎo)入的鏡像,可能需要需要修改一下鏡像名稱

安裝插件?Dev Containers

右下角點(diǎn)擊重新打開(kāi) Reopen in Container(如果沒(méi)有,可以通過(guò) ctrl + shift+p,輸入 rebuild)

容器內(nèi)執(zhí)行命令

導(dǎo)出鏡像:

docker save nes.osprey.io/nes-build-run > nes-build-run.tar

在虛擬機(jī)的代碼倉(cāng)庫(kù).devcontainer里面導(dǎo)入鏡像:

docker?load?<?nes-build-run.tar

nes C語(yǔ)言模擬器開(kāi)源倉(cāng)庫(kù)地址:

https://github.com/Dozingfiretruck/nes

https://gitee.com/Dozingfiretruck/nes

魂斗羅 nes 下載參考鏈接? https://www.fcnes.com/fc/act/38.html#downadress

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
FTLF8528P3BCV 1 Finisar Corporation Transceiver, 840nm Min, 860nm Max, 8500Mbps(Tx), 8500Mbps(Rx), LC Connector, Panel Mount, ROHS COMPLIANT, PACKAGE-20
$296.52 查看
ECS-2520S18-384-EN-TR 1 ECS International Inc HCMOS Output Clock Oscillator,

ECAD模型

下載ECAD模型
$1.86 查看
NX5032GA-20.000M-STD-CSU-2 1 Nihon Dempa Kogyo Co Ltd Parallel - Fundamental Quartz Crystal, 20MHz Nom, ROHS COMPLIANT PACKAGE-2
暫無(wú)數(shù)據(jù) 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

六年開(kāi)發(fā)經(jīng)驗(yàn),豐富的KEIL調(diào)試經(jīng)驗(yàn),STM32使用經(jīng)驗(yàn),C語(yǔ)言運(yùn)用經(jīng)驗(yàn)。