ブラウザでヘビをコンパイルします

javascriptで書かれたPCエミュレーターでlinuxを見ましたか?

そうでない場合、ここに彼に関する短い投稿があります。

そして、 彼はここにいます。



このエミュレータは、Linuxコンソールを知るための良い方法です。

Ubuntu(またはLinux)を持っているか、持っていた場合、Windowsのように、プログラムとゲームはパッケージマネージャーを使用してインストールされます。



さて、ここで何ができますか?



Linuxで実行できるアプリケーションアクションの1つは、ソースからプログラムをコンパイルすることです。

プログラムを作成したことがある場合は、Visual StudioやCodeBlocksなどのIDEを使用しましたが、この場合、明らかにIDEはありません。

ただし、gccプログラムを使用してコンソールからコードをコンパイルできます。これは、システムイメージで非常に便利です。



コンソールに次のように入力します: gcc hello.cと[ENTER]を押します

ここで、hello.cはファイルの名前、またはそれへのパスですが、hello.cは現在のフォルダーにあるため、現在は名前のみを記述しています。

はい、コンソールには現在のフォルダーがあり、そのパスはまたは$の左側に書き込まれます

無制限の権限を持つrootとして作業していることを意味します; $ -通常のユーザーとして)。

cd%folder name%またはcd ..を使用してフォルダー内を移動し、階層の上位のフォルダーに移動します。また、 lsを使用して、現在のフォルダー内のファイルとフォルダーを一覧表示します。



画像



さて、私たちはgcc hello.cを注文して待ちました:

(hello.cは以前、テストのために作成者によってシステムイメージに配置されていました)

画像



1〜2分待ったが、プログラムはまだコンパイルされていた。

gccはa.outファイル(デフォルト名)を作成しました。これは既製のバイナリなので、実行してみましょう。

プログラムの名前を単に書くと、コマンドラインインタープリターはそのようなファイルを見つけられなかったと言い、

この場合、彼は現在のフォルダーではなく、/ usr / bin、たとえばcd、ls、gccなどのプログラムが配置されている他の場所を探しているためです。

したがって、. / a.outを記述します:( ./-は現在のフォルダーを意味します)

画像



Hello、Worldが画面に表示されるため、すべてが機能します。 しかし、helloworldでの1分間は長い時間です! もっと速くできますか?

簡単な解決策があります。gccコンパイラを使用する代わりにtccを使用します。すべて同じです。gcchello.cの代わりに、 tcc hello.cを記述する必要があります。



もっと複雑なものをコンパイルしてみましょう!

確かに 、コンソールアプリケーションしか実行できないため、コンソールスネークnsnakeのソースコードを取得します。

アーカイブにはsrcフォルダーが含まれており、まさに必要なものが含まれています。

しかし、質問は次のとおりです。これらのファイルをエミュレータに転送する方法を教えてください。

エミュレータのFAQには、この質問に対する答えがあります。

クリップボードを使用する必要があります-テキストを右側に挿入する領域とコマンド(プログラム)cat <and>は、それぞれcatコマンドの入出力ストリームのリダイレクトです: cat </ dev / clipboard> main.c

また、ゲーム用のフォルダーとsrcフォルダー( mkdir srcコマンドを使用 )を作成する必要があります。そこにソースファイルをコピーします。

その結果、このプロセスは次のようになります。



画像



上/下矢印を使用して、入力したコマンドの履歴をナビゲートできます。 そのため、毎回コマンドを入力しないようにするには、上矢印を使用して前のコマンドを表示して編集します。



ソースは準備ができているので、今度はコンパイルする必要があります。その後、再生します。

ただし、それほど単純ではないため、いずれかのファイルをコンパイルしようとするとエラーが発生します。

画像



実際には、プロジェクト全体のコンパイルは非常に複雑で時間がかかる場合があり、コンパイラとリンカーにオプションを追加してファイルを個別にコンパイルし、オブジェクトファイルを一緒に収集し、外部ライブラリを使用し、プログラムにはまだドキュメントなどが含まれています...

あなたがソースからプログラムをコンパイルするときにあなたがそれについて考えないように、Makefileは書かれています-それは単にコンパイルするものなどを綴るだけです。

つまり、エミュレーターのゲームフォルダーにコピーする必要があります。

また、コンピューターにあるゲームのフォルダーのように、bin、obj、およびdocフォルダーを作成する必要があります。

makeと入力します。Makefileを処理し、それに従ってすべてをコンパイルするプログラムです。

画像



一般的に、私は待つのにうんざりしていて、CTRL + Cを押してプロセスを完了しました。 なぜそんなに長いの?

Makefileにはgccでコンパイルする必要があると書かれていますが、これは必要ないので、tccを使用して高速化する必要があります。

そのため、Makefileでそのような行を見つけて、gccをtccに置き換えます。

画像

古いMakefileを削除し、新しいMakefileをコピーし再度作成します。

UPD: ZyXIのよりシンプルなバージョン: CC = tccを作成

画像



はるかに高速。 わあ! すでにプレイできると書かれています!

前回gccでコンパイルされなかったファイルのみがコンパイルされたことに注意してください。

ファイルが個別にコンパイルされ、各.cファイルがobjフォルダーに独自の.OBJファイルを作成してから、

binフォルダー内の実行可能ファイル。



開始( bin / nsnake )、画面がクリアされて...



画像



どうですか! ファイルが異なる色で表示されることがわかりました!

さて、花を使わずにヘビを演奏しましょう。

ヘビのソースコードには、画面にエラーメッセージを表示し、最も重要なことにはプログラムを中断する行があります。

削除すると、ターミナルシンボルの色を制御する機能が低下するため、ゲームがクラッシュする可能性があります。

または多分それは何とか動作します。

コードは、243行目のengine.cファイルにあります。







2行のそれぞれの前に2つのスラッシュを記述します-これでコードは非アクティブになり、言い換えるとコメントアウトされます。

engine.cを再作成し、プログラムを再構築します。







これでヘビが起動し、ゲームメニューが表示されます。 やった!





複雑さのレベルとエッジの存在の選択には問題があります。 まず、色がなく、アクティブなアイテムが別の色で強調表示されているためです。 それらは矢印によっても選択され、矢印はゲームでは機能しません。



WASDを使用してプレイできます。







PS:ゲームを完全にインストールするには、ドキュメントをコピーしてmake installを実行する必要がありますが、問題が発生します。

この可能性はまだ考慮されていません:ゲームの実行可能ファイルが既にある場合、uuencodeとuudecodeを使用してエミュレータに転送できます(これもFAQに記載されています)。



UPD: TERM = xtermコマンドは色不足の問題を解決します。

TERM = linuxは、矢印をヒープに作用させます-複雑さのレベルとエッジの存在を選択できます。

先端をありがとうkekekeks

(ただし、奇妙なグリッチが表示されます-左側の要素に右側の境界線が塗られています-コメントのスクリーンショットを参照してください)



All Articles