ExcelVBA;ASCIIアート GT(RX75) vs MA
ガンタンクとマゼラアタックとの戦いです。
極限までに絞った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
中学生の頃、電波新聞社の「マイコンBASICマガジン」にガンダムの戦闘ゲームが掲載されており、そのキャラクターがASCII文字だけで表現されてあったことに感動しました。
当時のBASICは色々と制約があり、今のように色々は表現は出来ませんでしたが、その「制限の枠内」だからこそのシンプルさ、素朴さ、無骨なカッコ良さ、美しさがあったと思っています。
この場に掲載されていただくことで、また夢が一つ叶いました。
<(_ _)>
【実際に動作している様子の動画のURL】
https://youtube.com/shorts/nkIMe_jQwHU?si=exumdQdQTdb25Gsj




