上班摸鱼?C语言玩魂斗罗!

最近玩了docker,发现真的很方便,和Java 、Python这种类似,一次写好,到处运行。

虽然是一项技术,也是工作技能,但只是工作怎么行,闲暇之余,还是可以用来摸摸鱼的。

超级玛丽

只要是nes游戏,应该都支持。

双人模式下,目前数字键使用的是小键盘。

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


# 创建用户 cmd:id
ARG USERNAME=osprey
ARG USER_UID=1000
ARG 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-repository
RUN apt -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates
RUN add-apt-repository ppa:xmake-io/xmake -y && apt-get update && apt-get install -y xmake
RUN apt-get install -y libsdl2-dev

RUN apt-get install -y git make gcc 
# option
RUN  apt-get install -y nano iputils-ping
# setting the password of root to 123456
RUN echo 'root:123456' | chpasswd

USER $USERNAME
ENV 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

#设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 创建用户 cmd:id
ARG USERNAME=osprey
ARG USER_UID=1000
ARG 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
RUN apt-get install -y p7zip-full libsdl2-dev

USER $USERNAME
ENV HOME=/home/$USERNAME

RUN mkdir /home/$USERNAME/work
WORKDIR /home/$USERNAME/work
RUN 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/Dozingfiretruck
git 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

容器内执行命令

导出镜像:

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

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 1
收藏 2
关注 156
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧