私はバッチでグリッドを作成するプロジェクトで作業していましたが、バッチゲームなどでより良いグラフィックスにアクセスしたり変更したりすることができます。複数行のバッチファイル印刷で奇妙なエラーが発生しました
@echo off
setlocal ENABLEDELAYEDEXPANSION
!x!
:::::::::::
:: ALIAS ::
:::::::::::
:@alias
set x=exit/b
goto:@main
!x!
:::::::::::
:: MAIN ::
:::::::::::
:@main
call:$Canvas _canvas 16 16 .
set px=%~1
set py=%~2
set _canvas_point[!px!][!py!]=#
!_canvas#draw!
!x!
:::::::::::
::OBJECTS::
:::::::::::
:@objects
!x!
:$Canvas
set this=%~1
set /a !this!_width=%~2
set /a !this!_height=%~3
set !this!_default_char=%~4
set !this!#draw=call:#$canvas_proto_draw !this!
for /L %%i in (1, 1, !%this%_height!) do (
for /L %%j in (1, 1, !%this%_width!) do (
set !this!_point[%%j][%%i]=!%this%_default_char!
set !this!_row[%%i]=!%this%_row[%%i]!!%this%_point[%%j][%%i]!
)
)
!x!
:#$Canvas_proto_draw
set this=%~1
for /L %%i in (1, 1, !%this%_height!) do (
for /L %%j in (1, 1, !%this%_width!) do (
set !this!_row[%%i]=!%this%_row[%%i]!!%this%_point[%%j][%%i]!
)
)
for /L %%i in (1, 1, !%this%_height!) do (
echo !%this%_row[%%i]!
)
!x!
私の問題は、最終的な出力で発生します。それを与えること1, 1
点は概ね半頂列に亘るアップ示すことになります。なぜこのようなことが起こるのか分かりませんし、助けが必要です。エコーをオンにしてすべての出力をコーディングした結果、_canvas_point[1][1]
の値は#
という値になりました。ここで
が出力されます。
C:\Home>canvas 1 1
................#...............
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
C:\Home>
Hereは出力が@echo on
クイック物事持つペーストビンリンクです: をはい、これはバッチ・ファイル内でのオブジェクト指向プログラミングで弱々しい試みである はい、私は他の言語がこの種のものの方が良いことを知っています、私はバッチファイルでそれをやりたいだけです。 はい、私は奇妙な文章の選択肢があります。それは私がそれを読むことができるように、ラベルがgotoの場所と関数ラベルの両方に使われるのを見ているからです。
ありがとうございました。私はアプローチがあまり意味がないことを理解するが、助けてくれてありがとう:) – Bmofa