page0093
の編集
http://osecpu.osask.jp/wiki/?page0093
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
BracketName
FormattingRules
FrontPage
Fulyn
Fulyn-v2
Fulyn_Samples
Help
InterWiki
InterWikiName
InterWikiSandBox
K
KOR_PIT8254
KWVM.NET
Liva
MANA
MenuBar
OSECPU_FPGA
PG_MANA
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
hikalium
hikarupsp
hikarupsp_ELCHNOS
hikarupsp_ELCHNOS_IDE
hikarupsp_FrontEndCode
hikarupsp_WebCPU-VM
hikarupsp_WebCPU-VM_internal
hikarupsp_study_hh4
impressions
impressions0000
jpag0000
jpag0001
jpag0002
jpag0003
jpag0004
jpag0005
lambdalice
mandel59
members
memo0000
memo0001
memo0002
memo0003
memo0004
memo0005
memo0006
memo0007
memo0008
memo0009
memo0010
osask
osecpu4android
page0000
page0001
page0002
page0003
page0004
page0005
page0006
page0007
page0008
page0009
page0010
page0011
page0012
page0013
page0014
page0015
page0016
page0017
page0018
page0019
page0020
page0021
page0022
page0023
page0024
page0025
page0026
page0027
page0028
page0029
page0030
page0031
page0032
page0033
page0034
page0035
page0036
page0037
page0038
page0039
page0040
page0041
page0042
page0043
page0044
page0045
page0046
page0047
page0048
page0049
page0050
page0051
page0052
page0053
page0054
page0055
page0056
page0057
page0058
page0059
page0060
page0061
page0062
page0063
page0064
page0065
page0066
page0067
page0068
page0069
page0070
page0071
page0072
page0073
page0074
page0075
page0076
page0077
page0078
page0079
page0080
page0081
page0082
page0083
page0084
page0085
page0086
page0087
page0088
page0089
page0090
page0091
page0092
page0093
page0094
page0095
page0096
page0097
page0098
page0099
page0100
page0101
page0102
page0103
page0104
page0105
page0106
page0107
page0108
page0109
pagenames
populars
seccamp2013
seccamp2014
seccamp2017
ttwilb
ttwilb-asmi
yao
* OSECPU-ASKA入門 #0013 -(by [[K]], 2013.06.23) ** (0) はじめに -以下の記事はosecpu112dのWindows版を前提にしています。他の版を使っている場合は適宜読み替えてください。 --ちなみに[[page0074]]を読めばrev2の最新版が見つかります。 ~ -もくじ --[[page0087]]: #0010 --[[page0088]]: #0011 --[[page0089]]: #0012 --[[page0093]]: #0013 ** (1) sleep -api_sleep(mode, msec); : --指定された時間だけ、プログラムを停止させます。msecはミリ秒という意味です。つまり1000で1秒です。 --なおmsecに-1を指定することもできて、これは無限大時間のsleepを表します。ユーザがウィンドウを閉じるかCtrl-Cすると終了します。 --modeはとりあえず0を指定すると覚えておいてください。他の用法はおいおい説明します。 #include "osecpu_ask.h" Int32s xsiz:R00, ysiz:R01, x0:R02, y0:R03, col:R04, i:R05; // ゆっくりじわじわと描画されます. for (i = 0; i != 128; i++) { xsiz = ysiz = (144 - i) * 2; x0 = (320 - 144) + i; y0 = (240 - 144) + i; col = i * 0x020201; api_fillOval(0, xsiz, ysiz, x0, y0, col); api_sleep(0, 100); } ** (2) アニメーション -描画命令とsleepがあればアニメーションができます。 -ただし今(osecpu112d)のOSECPU-VMのお手軽描画処理ルーチンは手抜きで速度が出ないので、FPSはせいぜい10で、解像度も200x200~300x300程度でお願いします。 #include "osecpu_ask.h" Int32s x:R00, y:R01, vx:R02, vy:R03, tx:R04, ty:R05; api_openWin(320, 240); x = 32; y = 0; vx = 8; vy = 8; for (;;) { tx = x + vx; ty = y + vy; if (tx < 0 ) { vx = 8; } if (tx > 320 - 16) { vx = -8; } if (ty < 0 ) { vy = 8; } if (ty > 240 - 16) { vy = -8; } x += vx; y += vy; api_fillOval(MODE_COL3, 7, 16, 16, x, y); // ボールを描く. api_sleep(0, 100); api_fillRect(MODE_COL3, 0, 16, 16, x, y); // ボールを消す. } ** (3) if文 -ちょっと説明が前後してしまいましたが、OSECPU-ASKAではif文が使えます。基本的にはC言語と同じですが、条件が成立したときの文やelse節の文は、原則として { } でくくる必要があります。1文しかなくても省略しないでください。 if (条件式) { 成立したときに実行される } または if (条件式) { 成立したときに実行される } else { 不成立のときに実行される } -if文では、 break; と continue; と goto文だけに限って、 { } でくくらずに書けます(最適化もききます)。しかしelse節がある場合はこの方法は使えません。しかも { } でくくらない場合は、改行せずに書く必要があります。いろいろ制約が多いです。 --制約が多くなってしまったのは、もちろんASKAが手抜き実装のままになっているからです。例によって、おもいやりとやさしさをお願いします。 if (条件式) break; // これはよい. if (条件式) break; // これはよくない. -しかし、たとえば if (条件式) { break; } と書いてはいけないのかと言うとそんなことはないので、よくわからなければこの書き方を忘れてしまってもいいと思います(その代わり現状では最適化がききませんが)。 -条件式に関してですが、ASKAでは&&や||がまだ使えません。代わりに&や|を使ってください。 ** (4) exit -api_exit(i); : --アプリケーションをただちに終了させます。iには終了コードを指定できます。0は正常終了を意味します。 --開かれているウィンドウがあればそれは直ちに閉じられます。 ** (5) inkey -api_inkey(_i, mode); : --キー入力をするためのAPIです。このAPIは今まで紹介してきたAPIと大きな違いが一つあって、結果をプログラムが受け取る必要があります。 --現在(osecpu112d)では、OSECPU-ASKAには「関数値」という概念がないので、以下のような記述ができません。 k = api_inkey(mode); --代わりどう書くのかと言うと、こうします。 api_inkey(k, mode); --つまり引数の中に書いてしまうわけですね。かなりダサいです。C言語のように&をつけるとかそういうことすらなく、そのまま書くので、かなり分かりにくいです。・・・すみません! --このように値を渡すのではなく受け取るために指定する場合は、_iのようにアンダースコア付きで紹介します。しかし実際に使うときは変数名の前に_を付ける必要はありません。当然ですがここは変数しか指定できません。定数を書かないようにしてください。 --キーコードは基本的には文字コードですが、いくつかのキーは特別なコードが返されます。 -1 キーは入力されていない 27 Escキー 4128 PageUp 4129 PageDown 4130 End 4131 Home 4132 ← 4133 ↑ 4134 → 4135 ↓ 4136 Insert 4137 Delete --modeは、とりあえず常に0にしておきます。他の値の説明はまたの機会に。 ** (6) アニメーション+キー入力=ゲーム -キー入力に応じて、アニメーション内容が変化するようにできれば、それはゲームが作れるということです! -と思ったら点数表示ができないとだめですね。そのための説明が足りていません。 -それにキャラクタも描きたいですよね・・・そのための説明も不十分ですね。 -じゃあ今後はそこを中心に・・・。 ** つづく -[[page0095]]につづく * こめんと欄 #comment
タイムスタンプを変更しない
* OSECPU-ASKA入門 #0013 -(by [[K]], 2013.06.23) ** (0) はじめに -以下の記事はosecpu112dのWindows版を前提にしています。他の版を使っている場合は適宜読み替えてください。 --ちなみに[[page0074]]を読めばrev2の最新版が見つかります。 ~ -もくじ --[[page0087]]: #0010 --[[page0088]]: #0011 --[[page0089]]: #0012 --[[page0093]]: #0013 ** (1) sleep -api_sleep(mode, msec); : --指定された時間だけ、プログラムを停止させます。msecはミリ秒という意味です。つまり1000で1秒です。 --なおmsecに-1を指定することもできて、これは無限大時間のsleepを表します。ユーザがウィンドウを閉じるかCtrl-Cすると終了します。 --modeはとりあえず0を指定すると覚えておいてください。他の用法はおいおい説明します。 #include "osecpu_ask.h" Int32s xsiz:R00, ysiz:R01, x0:R02, y0:R03, col:R04, i:R05; // ゆっくりじわじわと描画されます. for (i = 0; i != 128; i++) { xsiz = ysiz = (144 - i) * 2; x0 = (320 - 144) + i; y0 = (240 - 144) + i; col = i * 0x020201; api_fillOval(0, xsiz, ysiz, x0, y0, col); api_sleep(0, 100); } ** (2) アニメーション -描画命令とsleepがあればアニメーションができます。 -ただし今(osecpu112d)のOSECPU-VMのお手軽描画処理ルーチンは手抜きで速度が出ないので、FPSはせいぜい10で、解像度も200x200~300x300程度でお願いします。 #include "osecpu_ask.h" Int32s x:R00, y:R01, vx:R02, vy:R03, tx:R04, ty:R05; api_openWin(320, 240); x = 32; y = 0; vx = 8; vy = 8; for (;;) { tx = x + vx; ty = y + vy; if (tx < 0 ) { vx = 8; } if (tx > 320 - 16) { vx = -8; } if (ty < 0 ) { vy = 8; } if (ty > 240 - 16) { vy = -8; } x += vx; y += vy; api_fillOval(MODE_COL3, 7, 16, 16, x, y); // ボールを描く. api_sleep(0, 100); api_fillRect(MODE_COL3, 0, 16, 16, x, y); // ボールを消す. } ** (3) if文 -ちょっと説明が前後してしまいましたが、OSECPU-ASKAではif文が使えます。基本的にはC言語と同じですが、条件が成立したときの文やelse節の文は、原則として { } でくくる必要があります。1文しかなくても省略しないでください。 if (条件式) { 成立したときに実行される } または if (条件式) { 成立したときに実行される } else { 不成立のときに実行される } -if文では、 break; と continue; と goto文だけに限って、 { } でくくらずに書けます(最適化もききます)。しかしelse節がある場合はこの方法は使えません。しかも { } でくくらない場合は、改行せずに書く必要があります。いろいろ制約が多いです。 --制約が多くなってしまったのは、もちろんASKAが手抜き実装のままになっているからです。例によって、おもいやりとやさしさをお願いします。 if (条件式) break; // これはよい. if (条件式) break; // これはよくない. -しかし、たとえば if (条件式) { break; } と書いてはいけないのかと言うとそんなことはないので、よくわからなければこの書き方を忘れてしまってもいいと思います(その代わり現状では最適化がききませんが)。 -条件式に関してですが、ASKAでは&&や||がまだ使えません。代わりに&や|を使ってください。 ** (4) exit -api_exit(i); : --アプリケーションをただちに終了させます。iには終了コードを指定できます。0は正常終了を意味します。 --開かれているウィンドウがあればそれは直ちに閉じられます。 ** (5) inkey -api_inkey(_i, mode); : --キー入力をするためのAPIです。このAPIは今まで紹介してきたAPIと大きな違いが一つあって、結果をプログラムが受け取る必要があります。 --現在(osecpu112d)では、OSECPU-ASKAには「関数値」という概念がないので、以下のような記述ができません。 k = api_inkey(mode); --代わりどう書くのかと言うと、こうします。 api_inkey(k, mode); --つまり引数の中に書いてしまうわけですね。かなりダサいです。C言語のように&をつけるとかそういうことすらなく、そのまま書くので、かなり分かりにくいです。・・・すみません! --このように値を渡すのではなく受け取るために指定する場合は、_iのようにアンダースコア付きで紹介します。しかし実際に使うときは変数名の前に_を付ける必要はありません。当然ですがここは変数しか指定できません。定数を書かないようにしてください。 --キーコードは基本的には文字コードですが、いくつかのキーは特別なコードが返されます。 -1 キーは入力されていない 27 Escキー 4128 PageUp 4129 PageDown 4130 End 4131 Home 4132 ← 4133 ↑ 4134 → 4135 ↓ 4136 Insert 4137 Delete --modeは、とりあえず常に0にしておきます。他の値の説明はまたの機会に。 ** (6) アニメーション+キー入力=ゲーム -キー入力に応じて、アニメーション内容が変化するようにできれば、それはゲームが作れるということです! -と思ったら点数表示ができないとだめですね。そのための説明が足りていません。 -それにキャラクタも描きたいですよね・・・そのための説明も不十分ですね。 -じゃあ今後はそこを中心に・・・。 ** つづく -[[page0095]]につづく * こめんと欄 #comment
テキスト整形のルールを表示する