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

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

上班摸魚?C語言玩魂斗羅!

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

來源:公眾號【魚鷹談單片機】,作者:魚鷹Osprey

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

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

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

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

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è)置時區(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-樹莓派5):

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

摸魚指令(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 游戲,可以拷貝到容器中后,再進入容器中運行該文件

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

最后為了更好的摸魚,可以配合vscode使用,隨時隨地打開模擬器摸魚,爽歪歪。

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打開 nes,

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

安裝插件?Dev Containers

右下角點擊重新打開 Reopen in Container(如果沒有,可以通過 ctrl + shift+p,輸入 rebuild)

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

導出鏡像:

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

在虛擬機的代碼倉庫.devcontainer里面導入鏡像:

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

nes C語言模擬器開源倉庫地址:

https://github.com/Dozingfiretruck/nes

https://gitee.com/Dozingfiretruck/nes

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
JS28F128J3F75A 1 Micron Technology Inc Flash, 8MX16, 75ns, PDSO56, 14 X 20 MM, LEAD FREE, TSOP-56
$12.8 查看
HFBR-1414MZ 1 Foxconn Transmitter, 792nm Min, 865nm Max, 160Mbps, ST Connector, DIP, Panel Mount, Through Hole Mount, ROHS COMPLIANT PACKAGE
$26.38 查看
MC100EP210SFAG 1 Rochester Electronics LLC 100E SERIES, LOW SKEW CLOCK DRIVER, 5 TRUE OUTPUT(S), 0 INVERTED OUTPUT(S), PQFP32, LEAD FREE, LQFP-32
$19.03 查看

相關(guān)推薦

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

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