表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
<R15>15歳未満の方は移動してください。

ExcelVBA;ASCIIアート GT(RX75) vs MA

作者: 安永祐二
掲載日:2025/10/15


ガンタンクとマゼラアタックとの戦いです。


極限までに絞ったASCII文字で表現してみました。



コード・プログラムも要するにテキスト(文章)なので、この場をお借りして掲載させていただきました。






【コード・プログラム】


Sub DrawScene()

Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets(1)

ws.Cells.ClearContents


' ガンタンク(自機)

ws.Cells(19, playerX).Value = "  // "

ws.Cells(20, playerX).Value = "  // D "

ws.Cells(21, playerX).Value = " ¥¥■>>L== "

ws.Cells(22, playerX).Value = "  ▲▼   "

ws.Cells(23, playerX).Value = "<●●●>  "


' マゼラアタック(敵機)

ws.Cells(21, enemyX).Value = "-----■■ト "

ws.Cells(22, enemyX).Value = " =■ "

ws.Cells(23, enemyX).Value = "<●●●●> "


' 弾 (プレイヤー)

If bulletPActive Then

ws.Cells(bulletY, bulletPX).Value = "・"

End If


' 弾(敵)

If bulletEActive Then

ws.Cells(bulletY, bulletEX).Value = "・"

End If

End Sub


Sub MoveLeft()

If playerX > 2 Then playerX = playerX - 1

If Not bulletPActive And Not bulletEActive Then DrawScene

End Sub


Sub MoveRight()

If playerX < 20 Then playerX = playerX + 1

If Not bulletPActive And Not bulletEActive Then DrawScene

End Sub


Sub ShootPlayer()

If Not bulletPActive And Not bulletEActive Then

bulletPX = playerX + 6 ' 手の位置

bulletEX = enemyX - 1 ' 敵の手前

bulletPActive = True

bulletEActive = True

ShootLoop

End If

End Sub


Sub ShootLoop()

Do While bulletPActive Or bulletEActive

If bulletPActive Then bulletPX = bulletPX + 1

If bulletEActive Then bulletEX = bulletEX - 1


DrawScene

DoEvents

Application.Wait Now + TimeValue("0:00:1")


' 勝敗判定

If bulletPX = enemyX Then

MsgBox "ガンタンクの勝ち!", vbInformation

EndGame

Exit Sub

ElseIf bulletEX = playerX + 2 Then

MsgBox "マゼラアタックの勝ち!", vbExclamation

EndGame

Exit Sub

ElseIf bulletPX = bulletEX Then

MsgBox "相打ち!引き分け!", vbInformation

EndGame

Exit Sub

End If


' 弾が画面外に出たら終了

If bulletPX > 35 Then bulletPActive = False

If bulletEX < 1 Then bulletEActive = False

Loop

End Sub


Sub EndGame()

Application.OnKey "{LEFT}"

Application.OnKey "{RIGHT}"

Application.OnKey " "

bulletPActive = False

bulletEActive = False

DrawScene

End Sub




挿絵(By みてみん)





中学生の頃、電波新聞社の「マイコンBASICマガジン」にガンダムの戦闘ゲームが掲載されており、そのキャラクターがASCII文字だけで表現されてあったことに感動しました。


当時のBASICは色々と制約があり、今のように色々は表現は出来ませんでしたが、その「制限の枠内」だからこそのシンプルさ、素朴さ、無骨なカッコ良さ、美しさがあったと思っています。


この場に掲載されていただくことで、また夢が一つ叶いました。

<(_ _)>



【実際に動作している様子の動画のURL】


https://youtube.com/shorts/nkIMe_jQwHU?si=exumdQdQTdb25Gsj





評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ