page0087
の編集
http://osecpu.osask.jp/wiki/?page0087
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
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入門 #0010 -(by [[K]], 2014.06.20) ** (0) はじめに -以下の記事はosecpu111dのWindows版を前提にしています。他の版を使っている場合は適宜読み替えてください。 --ちなみに[[page0074]]を読めばrev2の最新版が見つかります。 ** (1) ASKAは意外に難しくない? -いきなりですが、以下のプログラムを見てください。ちなみにapp0101.ask相当の内容です。 #include "osecpu_ask.h" api_fillRect(MODE_COL3, 7, 640, 480, 0, 0); api_fillOval(MODE_COL3, 1, 300, 0, 320-150, 240-150); -実質3行です。中の数字の意味はとりあえず全く分かりません。それどころか英語の部分だってよく分かりません。とりあえずそのことは気にしないことにします。とにかく重要なことは、3行しか書いていないということです。 -これをosecpuの入ったフォルダにテキストファイルとして保存して(ここではとりあえずapp0101.askとする)、Windowsのコマンドプロンプトで、 prompt>amake app0101 -と入力すると、app0101.oseというアプリケーションファイルができます(もともとあった場合には問答無用で上書きされます)。 -次に prompt>osecpu app0101.ose -とすればこれは直ちに実行されて、以下のような画面が見えると思います。 http://osecpu.osask.jp/download/app0038.png -どうですか、つまり3行書くだけでこの程度の画像が表示できるというわけです。これは結構すごいと思うのですがどうでしょうか。CやC++でMFCとか使ってやったら、こんなに手軽にはできません。 ~ -もう一つ例を示そうと思います。 #include "osecpu_ask.h" Int32s col:R00, xsiz:R01, ysiz:R02, x0:R03, y0:R04, i:R05; for (i = 0; i != 128; i++) { col = i * 0x020201; xsiz = ysiz = (144 - i) * 2; x0 = (320 - 144) + i; y0 = (240 - 144) + i; api_fillOval(MODE_COL24, col, xsiz, ysiz, x0, y0); } -これは実質9行です。でもたったこれだけでも、こんな画面が出てきます。 http://osecpu.osask.jp/download/app0039.jpg -いろいろと意味の分からない英語や数字が出ていることは確かですが、しかしとにかく、たくさん書かなくてもある程度のことができるということをまずは分かってほしいです。 ~ -さらにもう一例を。 #include "osecpu_ask.h" Int32s c:R00, x:R01, y:R02; api_openWin(256, 256); c = 0; for (x = 0; x != 256; x++) { for (y = 0; y != 256; y++) { api_drawPoint(MODE_COL24, c, x, y); c += 0x100; // 00xxyy00 } } -これは実質10行です。でもたったこれだけでも、こんな画面が出てきます。 http://osecpu.osask.jp/download/app0006a.png ~ -ASKAは高級言語ではなくアセンブラという低級言語に分類されますが、しかし一般的なアセンブラとは大きく異なり、プログラムをそれなりに短く書くことが可能です。この節ではまずそれを分かってもらいたいと思います。 --ちなみに世間の普通のアセンブラはC言語の3倍以上の行数になります。 -命令の細かい意味は、以降の節で説明します。 ** (2) openWinとfillRect -(1)では、api_で始まるいくつかの命令がありました。それについて紹介します。 ~ -まずは api_openWin(xsiz, ysiz); です。これは画面にグラフィックス用のウィンドウを準備するための命令で、すべての描画命令に先立って1度だけ実行できます。したがって複数のウィンドウを持つことはできませんし、ウィンドウのサイズを後から変更することもできません。 -xsizにはx軸方向のピクセル数を、ysizにはy軸方向のピクセル数を入れます。これらの値はウィンドウの外側の大きさではなく、描画可能な領域の大きさを示しています。xsiz, ysizともゼロや負の値を指定してはいけません。 -openWinは省略して、いきなり描画命令を実行させることもできます。この場合自動で api_openWin(640, 480); が実行されます。ですからこの大きさでかまわないときはわざわざopenWinする必要はありません。でもあえてやりたければもちろんやってもいいです。 -描画域は必ず黒で初期化されます。描画命令で指定できる座標の範囲は、0~(xsiz-1), 0~(ysiz-1)になります。 ~ -次は api_fillRect(mode, color, xsiz, ysiz, x0, y0); です。これは画面に塗りつぶした長方形を描きます。modeは通常MODE_COL24を指定します。xsizとysizは長方形の辺の長さです。x0, y0は長方形の左上の座標を指定します。colorは色です。長方形の一部もしくは全部が描画域をはみ出すとエラーです。 -colorについてですが、こんなふうに指定します。 0x000000 : 黒、いわゆる #000000 0xffffff : 白、いわゆる #ffffff 0xff0000 : 赤、いわゆる #ff0000 -書いているときりがないので、 http://www.finitojapan.com/cltable.html とかを見て自分のほしい色を探してください。 -これで基本的にはどんな色でも使えるわけですが、色数が少なくていいから、もっと簡単に色を指定したいときがたまにあります(みなさんはないかもしれませんが、[[K]]にはあった)。そんなときは、modeにMODE_COL3を指定してください(3ビットカラー)。そうすると、colorは0から7までしか指定できなくなって、こんなに単純になります。 0:0x000000 1:0xff0000 2:0x00ff00 3:0xffff00 4:0x0000ff 5:0xff00ff 6:0x00ffff 7:0xffffff ~ ** つづく -[[page0088]]につづく *** もくじ -[[page0087]]: #0010 --(1) ASKAは意外に難しくない? --(2) openWinとfillRect -[[page0088]]: #0011 --(1) drawPointとfillOvalとdrawLine(ついでにmodeについて) --(2) とりあえずここまでで --(3) 整数型変数 -[[page0089]]: #0012 --(1) for構文 #0 --(2) コメントについて --(3) できそうでできないこと --(4) 色の指定と16進数について -[[page0093]]: #0013 --(1) sleep --(2) アニメーション --(3) if文 --(4) exit --(5) inkey --(6) アニメーション+キー入力=ゲーム -[[page0095]]: #0014 --(1) 関数の作り方、呼び出し方 --(2) 再帰呼び出しの例 -[[page0098]]: #0015 --(1) putStringとputStringDec --(2) drawStringとdrawStringDec * こめんと欄 #comment
タイムスタンプを変更しない
* OSECPU-ASKA入門 #0010 -(by [[K]], 2014.06.20) ** (0) はじめに -以下の記事はosecpu111dのWindows版を前提にしています。他の版を使っている場合は適宜読み替えてください。 --ちなみに[[page0074]]を読めばrev2の最新版が見つかります。 ** (1) ASKAは意外に難しくない? -いきなりですが、以下のプログラムを見てください。ちなみにapp0101.ask相当の内容です。 #include "osecpu_ask.h" api_fillRect(MODE_COL3, 7, 640, 480, 0, 0); api_fillOval(MODE_COL3, 1, 300, 0, 320-150, 240-150); -実質3行です。中の数字の意味はとりあえず全く分かりません。それどころか英語の部分だってよく分かりません。とりあえずそのことは気にしないことにします。とにかく重要なことは、3行しか書いていないということです。 -これをosecpuの入ったフォルダにテキストファイルとして保存して(ここではとりあえずapp0101.askとする)、Windowsのコマンドプロンプトで、 prompt>amake app0101 -と入力すると、app0101.oseというアプリケーションファイルができます(もともとあった場合には問答無用で上書きされます)。 -次に prompt>osecpu app0101.ose -とすればこれは直ちに実行されて、以下のような画面が見えると思います。 http://osecpu.osask.jp/download/app0038.png -どうですか、つまり3行書くだけでこの程度の画像が表示できるというわけです。これは結構すごいと思うのですがどうでしょうか。CやC++でMFCとか使ってやったら、こんなに手軽にはできません。 ~ -もう一つ例を示そうと思います。 #include "osecpu_ask.h" Int32s col:R00, xsiz:R01, ysiz:R02, x0:R03, y0:R04, i:R05; for (i = 0; i != 128; i++) { col = i * 0x020201; xsiz = ysiz = (144 - i) * 2; x0 = (320 - 144) + i; y0 = (240 - 144) + i; api_fillOval(MODE_COL24, col, xsiz, ysiz, x0, y0); } -これは実質9行です。でもたったこれだけでも、こんな画面が出てきます。 http://osecpu.osask.jp/download/app0039.jpg -いろいろと意味の分からない英語や数字が出ていることは確かですが、しかしとにかく、たくさん書かなくてもある程度のことができるということをまずは分かってほしいです。 ~ -さらにもう一例を。 #include "osecpu_ask.h" Int32s c:R00, x:R01, y:R02; api_openWin(256, 256); c = 0; for (x = 0; x != 256; x++) { for (y = 0; y != 256; y++) { api_drawPoint(MODE_COL24, c, x, y); c += 0x100; // 00xxyy00 } } -これは実質10行です。でもたったこれだけでも、こんな画面が出てきます。 http://osecpu.osask.jp/download/app0006a.png ~ -ASKAは高級言語ではなくアセンブラという低級言語に分類されますが、しかし一般的なアセンブラとは大きく異なり、プログラムをそれなりに短く書くことが可能です。この節ではまずそれを分かってもらいたいと思います。 --ちなみに世間の普通のアセンブラはC言語の3倍以上の行数になります。 -命令の細かい意味は、以降の節で説明します。 ** (2) openWinとfillRect -(1)では、api_で始まるいくつかの命令がありました。それについて紹介します。 ~ -まずは api_openWin(xsiz, ysiz); です。これは画面にグラフィックス用のウィンドウを準備するための命令で、すべての描画命令に先立って1度だけ実行できます。したがって複数のウィンドウを持つことはできませんし、ウィンドウのサイズを後から変更することもできません。 -xsizにはx軸方向のピクセル数を、ysizにはy軸方向のピクセル数を入れます。これらの値はウィンドウの外側の大きさではなく、描画可能な領域の大きさを示しています。xsiz, ysizともゼロや負の値を指定してはいけません。 -openWinは省略して、いきなり描画命令を実行させることもできます。この場合自動で api_openWin(640, 480); が実行されます。ですからこの大きさでかまわないときはわざわざopenWinする必要はありません。でもあえてやりたければもちろんやってもいいです。 -描画域は必ず黒で初期化されます。描画命令で指定できる座標の範囲は、0~(xsiz-1), 0~(ysiz-1)になります。 ~ -次は api_fillRect(mode, color, xsiz, ysiz, x0, y0); です。これは画面に塗りつぶした長方形を描きます。modeは通常MODE_COL24を指定します。xsizとysizは長方形の辺の長さです。x0, y0は長方形の左上の座標を指定します。colorは色です。長方形の一部もしくは全部が描画域をはみ出すとエラーです。 -colorについてですが、こんなふうに指定します。 0x000000 : 黒、いわゆる #000000 0xffffff : 白、いわゆる #ffffff 0xff0000 : 赤、いわゆる #ff0000 -書いているときりがないので、 http://www.finitojapan.com/cltable.html とかを見て自分のほしい色を探してください。 -これで基本的にはどんな色でも使えるわけですが、色数が少なくていいから、もっと簡単に色を指定したいときがたまにあります(みなさんはないかもしれませんが、[[K]]にはあった)。そんなときは、modeにMODE_COL3を指定してください(3ビットカラー)。そうすると、colorは0から7までしか指定できなくなって、こんなに単純になります。 0:0x000000 1:0xff0000 2:0x00ff00 3:0xffff00 4:0x0000ff 5:0xff00ff 6:0x00ffff 7:0xffffff ~ ** つづく -[[page0088]]につづく *** もくじ -[[page0087]]: #0010 --(1) ASKAは意外に難しくない? --(2) openWinとfillRect -[[page0088]]: #0011 --(1) drawPointとfillOvalとdrawLine(ついでにmodeについて) --(2) とりあえずここまでで --(3) 整数型変数 -[[page0089]]: #0012 --(1) for構文 #0 --(2) コメントについて --(3) できそうでできないこと --(4) 色の指定と16進数について -[[page0093]]: #0013 --(1) sleep --(2) アニメーション --(3) if文 --(4) exit --(5) inkey --(6) アニメーション+キー入力=ゲーム -[[page0095]]: #0014 --(1) 関数の作り方、呼び出し方 --(2) 再帰呼び出しの例 -[[page0098]]: #0015 --(1) putStringとputStringDec --(2) drawStringとdrawStringDec * こめんと欄 #comment
テキスト整形のルールを表示する