LoginSignup
2
2

More than 5 years have passed since last update.

shell scriptでoxゲームを作ってみた

Posted at

shell scriptでoxゲーム

Shellを触る機会があったので試しに作ってみたというだけの記事。
コードは以下のgitにあります。
oxgame_bash

動機

最近Linux/Unixマシンの使い方入門みたいな研修を受け、その中でちょっとしたscriptを組む機会があった。
せっかくだからこの知識を何かに活かせないかということで、とりあえずゲームでも作ってみるかってなった。

はまったところ

  • 独特の記法(制御構文, 条件文) 今までまともにスクリプトを組んだことがないので、まず if [ 条件文 ]; then fi みたいな構文に苦戦した。 また、条件文も数値の場合は -eq(equal), -ne(not equal), -a(and), -o(or)など今までにない感じだった。



* 2次元配列の扱い
調べて最初に出てきた方法でやったが、結構力技っぽいらしくて色々苦戦したのがここ。
- 初期化・代入
eval使わないとできないのか・・・

for ((x=0; x<$size; x++)) {
for ((y=0; y<$size; y++)) {
eval ARRAY${x}${y}=$none
}
}

- 参照
こっちも普通に$ARRAY${x}${y}にするとうまくいかず・・・

if [ $((ARRAY${x}${y})) -eq $none ]; then



* 関数の返り値
もともと正常終了かどうかのコードを返すものなので、1-255までの値しか返せないとのこと。(http://shellscript.sunone.me/function.html)
今回はこの制限は特に問題なかったが、返り値の取得でちょっと詰まってしまった。(以下は"judge_winner"関数の返り値をwinnerで取得する場合の例)

judge_winner$
winner=$?$

感想

こういうものを作るのものでは無いとわかってはいたが、予想以上の苦戦を強いられた。研修ではsu時にユーザが存在しない場合、自動作成するスクリプトを書いてみて、うまくbashのコマンドを使えば便利なものが作れそうな気がした。なので、今度は時間があればこっちの方向で何か作ってみたい。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2