約 1,831,943 件
https://w.atwiki.jp/mopsprogramming/pages/51.html
一度定義をロードしてしまったワードも、それを忘れて初めからやり直すことができます。ただし、そのためには、予め、"MARKER"でマークをつけておかなければなりません。 正確にいえば、このワード"MARKER"が、ロードされたワードを忘却するためのマークをつけるためのユーティリティーワードである、ということです。適当な名前(未定義ワード)をMARKERとして宣言することによってMopsに辞書にマークをつけ、事後にそのワードを実行すれば、MARKER宣言以後に定義されたワード(変数等も含む)を全て忘れることができるのです。例えば、 MARKER myMark | [ワード定義や変数・定数宣言、クラスメソッド定義] | のようなコードをMopsにロードしたとします。その後で、ワード"myMark"をMops環境上で実行すれば、"MARKER myMark"以後のコードは忘却され、Mops辞書はMARKER宣言の直前の状態に復帰します。 "MARKER myMark"以後が全部忘れられるのであって、選択的に忘れることはできません。これは、ワード定義等はそれ以前の定義を累積的に利用していくことが多いからです。 注意点として、"myMark"実行後は、"MARKER myMark"という宣言自体も忘れてしまいます。ですから、後でもう一度同じところまで戻りたくなる可能性があるのであれば、再び"MARKER myMark"という宣言を実行する必要があります。 例えば、途中にミススペリングを含んでいる可能性のあるソースコードが書かれたファイル"HONDA"をMopsにロードする前に、"MARKER myMARKII"を宣言しておくとします。: MARKER myMARKII // HONDA このようなコードをMops環境上で実行したとします。もし、ファイル"HONDA"のコードの中に案の定ミスがあって、システムビープ音とともにエラーメッセージが表示され、ロードが中断されたとしても、"myMARKII"を実行すればMops辞書は"HONDA"のロードを始める前の状態に復帰するので、ミスを直した上で、また上のコードから新たな再出発をすることができます。ミスがなく最後までロードされることがわかったら、正式のロードの際には、MARKERを外してかまわないわけです。(会社がくい違ってるとかいわない。) 関連項目: Mops環境でのコード実行 ファイルをロードする トップページへ 目次へ
https://w.atwiki.jp/2ndxct/pages/15.html
送信完了 メールの送信が完了しました。送信されたメールは管理者が内容を確認後、また改めて連絡します。送信ありがとうございました。 トップページへ
https://w.atwiki.jp/2ndxct/pages/2.html
メニュー トップページ XCTとは 実施要綱 参加申込 参加団体 試合ルール お問い合わせ 管理用 プラグイン紹介 メニュー メニュー2 編集
https://w.atwiki.jp/2ndxct/pages/10.html
コメントプラグイン @wikiのwikiモードでは #comment() と入力することでコメントフォームを簡単に作成することができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_60_ja.html たとえば、#comment() と入力すると以下のように表示されます。 名前 コメント
https://w.atwiki.jp/mopsprogramming/pages/19.html
スタック注釈法 先に進む前に、誰かがあなたのプログラムを読むときのために、コマンドの前と後でスタックがどのように変化するのかを注釈するための、特別な記号法に慣れておくべきでしょう。そのフォーマットは次のようになります。: ( 前 -- 後 ) スタック上の値の配置が、演算の前と後の両方について示されています(開く括弧と初めの記号との間の空白に注意してください)。 実際の演算は、二つ続けたハイフン(--)で暗示されています。 そうすると、加法演算(+ 演算だけで、答えを表示したりMopsプロンプト【カーソル】を移動する余分な部分が無いもの)では、演算の前にはスタック上に二つの数値があり、演算の後にはスタック上にそれらの和である一つの数値を得て終わることになります。 つまり、スタック上の第一および第二の数で初めて、和をスタック上に得て終わるわけです。 スタック注釈は、次のようになります。: ( n1 n2 -- sum ) これが、したがって、加法演算の記述になります。 ドットコマンドの注釈は、: ( n -- ) です。 というのは、このコマンドは、スタックから一番上の値を取り除き、それをスクリーン上に表示するからです。 この処理過程で、値はスタックから取り除かれ、演算の後には、スタック上にその痕跡は残りません。 CRコマンドでは、スタック上の値には何も起りません。 単にプロンプトを次の行の左端に移動するだけです。 スタック操作は含まれていないのですから、CRコマンドの注釈は次のようになります。: ( -- ) あなたがプログラムで定義する全てのMopsワードの定義には、そのスタック注釈がつけられるべきです。 私達の規約は、それが ( -- ) である場合、そしてその場合に限り、スタック注釈は省略してもよい、というものです。 わたしたちがMops辞書にある全ワードのスタック作用をどのように記述してきたかについては、このマニュアルのクラスレファレンスのパートを精読してください。 この記号法は、初めは、Mopsワードがどのように働くかを学ぶための助けとなります。 しかし、もっと後になって、エディターでプログラムを書き始めたときにも、あなたを助けてくれることでしょう。 括弧内のワードや数字(開き括弧の後に少なくとも一つの空白をあけた)は、プログラムの中にコンパイルされることはありません。 ですから、最終的なプログラムのサイズに、1バイトも付け加えることはありません。 注釈は、プログラム開発中にあなたが混乱してしまったとき、 あなたのプログラムを辿るときの助けとなるために存在するのです。 要するに、スタック注釈は、あなたのプログラムにトキュメントをつけるための、手軽な近道なのです。 注意:括弧内にあるもの(つまり、一つ以上の空白文字が続く開き括弧で始まる部分)はMopsによって無視されるのですから、 Mopsウィンドウ上で定義するワードに、スタック注釈を打ち込む必要はありません。 スタック注釈は、ソースコードを読むための助けとしてのみ、あるものです。 このチュートリアルでは、あなたが定義するワードのスタック注釈を頻繁に示しています。 注釈は、あなたが定義をよりよく理解できるように助け、 あなたがエディターで自分自身のプログラムを書き始めた後 あなたの定義はどのように見えるべきであるかを示すために、存在しているのです。 算術演算子 四つの基本算術演算子のMopsスタックの記述は次のようになります。: + ( n1 n2 -- sum ) ‘n1’ と ‘n2’ を加算し、 和をスタックに残す。 - ( n1 n2 -- diff ) ‘n1’ から ‘n2’ を減算し、差をスタックに残す。 * ( n1 n2 -- prod ) ‘n1’ と ‘n2’ を乗算し、積をスタックに残す。 / ( n1 n2 -- quot ) ‘n1’ を ‘n2’ で除算し、商をスタックに残す。 慣れない人にとっては、スタックの順番(数字が反対の順序で出てくるやり方)が、引き算や割り算では、 混乱するかもしれません。これらの演算では、数字の順序が大事だからです。 もし、10から4を引きたかったなら、減法演算がこれらに作用するための正しい順番で、数値がスタックから出てくるようにしなければなりません。 幸運なことに、Mopsは処理についての思考上の苦労をすべて取り除いてくれます。 おそらく学校で学んだであろう計算表記法では、問題は次のように表記されます: 10 - 4 そして求められる答え6を得ます。 Mopsでの計算では、スタック上に向う数値の順番は同じです。 演算記号を右に移動すればよいだけです。 この場合、問題は: 10 4 - となります。 割り算でも同じです。 200 を 25で割るときの式は、 200 / 25 から 200 25 / に変わります。 基本的な四則演算は、整数上にしか利用できません。 つまり、-2, 0, 3, -453, あるいは 1002といった数の全体です。 小数点以下は勘定されません。 しかし、ガッカリすることはありません。 Mopsはあらゆる種類の数を扱うためのたくさんの方法を持っているのですから。 これは、もっと後で見ることにしましょう。 四則演算を用いて実験してみてください。 一つ、二つ、三つおよび四つの整数(あるいは、そうしたいなら、もっと多く)をスタックに置いて、 演算が、スタック上の数をどのように利用するのか理解してください。 それを試し終えたなら、割り算の問題の応えについて、特別に注意してみてください。 試してみれば、割り切れない数の割り算の場合を除けば、全て思った通りになるはずです。 例えば、10 を 3で割れば、Mopsの答えは3です。 10 3 / . CR 3 | Mopsで割り算(/)を使った場合、余りは永久に失われてしまいます。 しかし、Mopsは、あなたのために余りを考慮してくれる、別の二つの演算をもっています。: /MOD ( n1 n2 -- rem quot ) ‘n1’ を ‘n2’ で割り、余りと商をスタックに置く。 MOD ( n1 n2 -- rem ) ‘n1’ を ‘n2’ で割り、余りだけをスタックに置く。 また 10 を 3 で割ってみましょう。 ただし、今回は、単なる割り算(/)ではなく /MOD 演算を使ってみましょう。 (Mopsは大文字小文字は区別しないことに注意!) 10 3 /mod . . cr 3 1 | 今度は、商(3)と余り(1)の両方がスタックに返されていることに注意しましょう。 (そして、その後に二つのドットコマンドで数値をプリントしています) また、それらの二つの答えがスタックに出てくるときの順番と、それが上記の/MODのスタック注釈で記述された順番とどのように対応しているのかにも注意してください。スタック注釈の一番右に現れる値である商は、スタックの一番上にあります。それで、ディスプレイ上には最初にプリントされたのです。 負の数を含む割り算は、二つの異なる方法で実施することができます。 MopsではAppleのハードウェアで用いられている規約に従っています。 つまり、"0に近い方をとる"割り算です(symmetric division【対称除法?】とも、よく言われます)。 商が正確に整数ではないときには、割り算が与える商は、それから0に近い側の整数になるということです。 例えば、 -10を7で割ると、商-1、余り-3が得られます。 (余りは、0でなければ、いつも最初の演算項、つまり割られる数と同じ符号になるでしょう。) 演算後置記法を習得する もしも、あなたがこの演算後置記法(postfix notation)と呼ばれる逆転記法(逆ポーランド記法(reverse Polish notation)としても知られています)に特別によく習熟しているのでなければ、 複合的な数式は、それをMopsの演算後置型の整数演算環境に入力する前に、分析が必要になるということを知っておくことは、重要なことです。 例えば、次の式をMopsプログラムに含めなければならなくなる、ということもあるでしょう。 1.25 * 12 * 50 ---------------- 10 そのような場合は、Mopsの整数演算法が障壁のように思われ、その演算後置記法は無益なものと思われるかもしれません。 しかし、全てを整数に変換する簡単な代数を思い出して、複合的な式を、あなたが紙と鉛筆でそれを解くときの段階に分解してみてください。 Mopsで上の式と等価なものは、次のようになります: 5 12 50 * * 40 / このような複合的な式の間にスタック上で何が起るかを追跡するのは有意義なことです。 ます第一に、 1.25を整数化するために、この数と分母(10)を4倍します。 それから、三つの数を全部スタック上でかけ算します。 最初の乗法演算はスタックの上の二つをかけ算し(50 かける12)、 その結果(600)をスタックに残します。 この演算は、スタックの一番上に600を残し、ちょうどその下は5になります。 二番目の乗法演算はスタックに残った二つの数をかけ算し(600かける5)、 結果(3000)をスタック上に残します。 この結果が、割られる数(分子)として割り算が起るのを待ちます。 さて、割る数(分母)40をスタックの一番上におくべきときです。 かくして、最後の演算である除法が二つの数の割り算をスタックにおいて行います。 これらスタックに関する事柄で、げんなりする必要はありません! レッスン10では、Mopsは二つの強力なツールを提供してくれていることを学ぶでしょう。 名前付き入力引数と 局所変数です。 これらによって、スタック上の値の代わりに容易に特定できる名前を使い、好きなときにその値を利用できるようになります。 このとき、スタックは、ほとんど見えなくなるでしょう。 しかし、それでもなお、スタックの基本を理解するのは重要なことです。 【局所変数等には、利用可能な個数に制限があります。このことは、Mopsにおいてもやはりスタックが基本であり、局所変数は補助手段であるということを示していると言えます。】 チュートリアル目次へ 前へ レッスン2 次へ レッスン4
https://w.atwiki.jp/xboxcodsearch/pages/5.html
このページではXBOX360版 Call of duty BlackOps 2 で主に使用されているS&Dのカスタムマッチのルール(いわゆるプラベ)について解説します。 なおこのルールはCyACで使用されているルールが元となっています。 試合は攻撃側・防衛側ともに5名ずつの計10名で行うのが通常です。 基本ルール タイムリミット 2分 必要ラウンド数 8R ハードコア オフ S&D設定 起爆タイマー 45秒 設置タイム 5秒 解除時間 5秒 マルチボム いいえ 攻守交代 4ラウンド毎 サイレント設置 はい 全般設定 スコアストリーク 不可 プレマッチタイマー 15秒 (※1) ラウンド開始タイマー 10秒 (※1) 自動チームバランス オン チーム変更 許可 ギミックを有効にする いいえ キルカメラ いいえ (※2) 3人称観戦 不可 CODキャスト 許可 ミニマップ ノーマル リベンジボイスを流す いいえ バトルチャッター オフ アナウンサー オフ 爆発ディレイ オフ スコアストリーク・ディレイ 60秒 ※1 開催者によっては長めに設定している場合があります ※2 開催者によってはオンに設定している場合があります スポーン設定 リスポーンディレイ なし 強制リスポーン はい 集団リスポーンディレイ なし 自滅ペナルティ なし チームキルペナルティ なし 体力およびダメージ設定 体力 100% 体力自動回復 ノーマル 味方への誤射 オン チームキルのキック制限 オフ ヘッドのみ いいえ ヒットインジケーター オン カスタムクラスの使用制限について 使用可能武器 アサルトライフル MTAR M27 SCAR-H SMR AN-94 サブマシンガン VectorK10 MSMC スナイパー Ballista ハンドガン Five-seveN リーサル グレネード タクティカル スモーク フラッシュバン パーク PEAK1 装備なし PEAK2 コールドブラッド PERK3 アウェアネス アタッチメント アサルトライフル : FMJ サブマシンガン : FMJ スナイパー : FMJ ハンドガン : なし ※ 以前はハンドガンにもFMJが装着可能でしたが、現在では「なし」が主流になっています。 スコアストリーク すべて使用禁止 武器所持規制人数 アサルトライフル 制限なし サブマシンガン 2名まで スナイパー 1名まで 使用マップ AFTERMATH CARGO EXPRESS RAID STANDOFF なお、通常のプラベでは上記マップを上から順に行い、計5マップを1セット(1周)として行われています。 ちなみに1セットあたり約2時間程度です。
https://w.atwiki.jp/mopsprogramming/pages/38.html
アプリケーションのインストール 【以下【】の中は訳者が付け足したものです。】 このレッスンでは、わたしたちのCurvesプログラムを、ダブルクリックで起動できるアプリケーションとしてインストールしましょう。 まず始めに、レッスン19で説明したGrDemoをロードしてください。ただし、今回は、プログラムを実行しないでください。 Mac OS X 10.4ユーザーへの注意::QuickDrawに関するトラブルを避けるため、Tigerユーザーは、Mach-O PowerMopsを使っている場合には、grDemoのソースコードを少し変更する必要があるでしょう。ファイル grdemo の中に、GRWINDクラスのNEW メソッドの定義があります(170行目)。このメソッドの定義の中の、 RR tAddr tLen docWind という行と、 true false という行の間に、次の一行を挿入してください。 $ 40000000 OR \ use QD on Tiger つまり、このメソッドの終わりの部分は次のようになります: RR tAddr tLen docWind \ initial rect, title, window type $ 40000000 OR \ use QD on Tiger true false \ visible, no close box dView \ the main view new super \ create the window! それから保存して、ファイルを(リ)ロードしてください。 installと打ち込んで実行するか、Utilitiesメニューから install... を選択してください。どちらかの方法で、【68k Mopsの場合は】次のダイアローグボックスが現れるでしょう。: 試しに、コントロールをクリックしてみてください。(ボタンはまだクリックしないでください) Dictionaryの数値が増えると、同じ量だけHeap数値が減少することに気付くでしょう。スタックについても同様です。ここで定義しているのは、あなたのアプリケーションで利用可能なメモリーをどのように使うか、です。‘stack’スペースは、パラメータースタックとリターンスタックに当てられます。システムは様々なシステムコールが行われたときにはパラメタースタックを使うことになりますから、この数字を20000より小さくしないようにお勧めします。 Dictionaryの数字は辞書のために割り当てられるメモリーの量を示していますが、これは現在既に割当てられているものに追加される分です。ここで行っているのは、既にロードされたアプリケーションのインストールなのですから、ここにあまり大きな数値は必要ありません。というのは、私達のアプリケーションが走行しているときには、もうこれ以上定義が辞書にコンパイルされることはないだろうからです。 Heapの数字は、プログラムが走行しているときにシステムに要求して利用可能になるメモリーの量を示しています。ここの数値は、利用可能なこの種のメモリーの最大量です。基本的には、スタックと辞書スペースが割り当てられた後に残ったものは全てヒープのために利用できます。ここに現れる数字は単なる参考でしかありません。というのは、インストールされたあなたのアプリケーションが走行しているときに利用可能なメモリーの量は、インストールを実施しているときの量と同じではないかもしれないからです。 ですから、スタックと辞書のために本当に必要なものだけを利用して、アプリケーションの走行中に利用可能なメモリーを最大にしておくのがよいでしょう。 通常は、アプリケーションをインストールするときには、それらは放っておかれることになるでしょう。 そうすれば、デフォルトでヒープへの割当が最大になります。 もしもボタンをクリックして値を変更してしまった場合は、"Max Heap"ボタンを押すことによって、デフォルトの設定に戻ることができます。 デフォルトのスタックへの配分が20000であることがわかるでしょう。これは私達の推奨する最低値です。辞書についてはたった128です。これは、あなたのアプリケーションが文字列をHEREに移動するコードを実行するような場合に備えた安全マージンを取ってあるに過ぎません。あなたのアプリケーションがHEREにもっと多くの領域を必要とすることがわかっているなら、この数値を調整することができます。このデモプログラムについては、しかし、その必要はありません。 さて、メモリー要求項目をチェックしたら、installをクリックしてください。次のようなダイアローグが現れるでしょう。実は、PowerMopsでは、これが最初のダイアローグとなります。また、PowerMops版は、特別なチェックボックス‘Generate shared library’も持っています。これについては、後でお話ししましょう。 このダイアローグでは、あなたのアプリケーションのクリエーターコードとファイルタイプを設定できます。これらは共に、4文字コードです。詳しくはInside Macintoshに説明されています。 あなたのアプリケーションを広く配布したいときには、これらのコードをAppleに登録して異なるプログラムが同じコード番号を用いないようにする必要があるでしょう。しかし、個人的に利用する場合には、何でも好きな4文字を利用することができます。このデモプログラム、Curvesについては、"CRVS"を選びました。 Curvesはそれが領有するドキュメントは持ちませんから、その他の欄は空白にします。アプリケーション名"Curves"を適切な欄に打ち込み、バージョン文字列に当たるものを書きます。この例では、‘version 1’を入れました。意味はわかるでしょう。 ダイアローグボックスは次のように見えるでしょう。: 前のレッスンで、‘スタートワード’と‘エラーワード’を説明しました。このダイアローグは、それぞれに、GOとCRASHを示唆しています。これは実際に私達が使ったワードの名前ですから、これはこのままにしておきます。 インストールされたアプリケーションでのこれらのワードが扱われ方はvectorsのメカニズムのおかげで、非常に単純です。これについてはレッスン20で触れました。 vectorは、いくつかのForthシステムでDEFERred wordと呼ばれているものと、基本的には同じものです。vectorはアドレスを保管しています。普通のワードと同じやり方でvectorを呼び出したときには、しかし、実行されるのは、そのアドレスが指しているワードです。このアドレスはいつでも変えることができます。スタートワードとエラーワードは二つのベクトルQuitVecとAbortVecに格納されます。 (やや紛らわしい名前ですが)QuitVecは、ワードQUITが実行されたときにはいつも実行されます。これは、実際には、Mopsのインタープリテーションループ(キーボード入力を待ち、それを実行するループです)の各回の初めにあります。通常は、QuitVecは何もしません(NULLを指しています)が、インストールされたアプリケーションでは、スタートワードを指すように設定されています。このスタートワードは、不定回ループで、クリックなど何であれ入力を処理し続けるべきものであって、それ自身が終了してしまってはいけません。もちろん、アプリケーションは最終的には終了しますが、それはスタートワードから呼び出される何らかのワードで処理されるユーザーアクションに応えてのものでなければなりません。これは、スタートワードは、その最後のセミコロンを抜けてはいけないということを意味します。もしそうなると、QUITの残りの部分が実行されて、キーボード入力をMopsワードとして解釈しようとします。これは、明らかに、インストールされたアプリケーションで起って欲しいことではありません。— Mopsウィンドウはおそらくもうそこにはないでしょうから。 AbortVecは、通常、Mopsのエラーメッセージが現れるエラーをMopsが感知したときに呼び出されます。QuitVecと同じように、それもはじめはNULLを指しています。インストールされたアプリケーションでは、ユーザーにスタックダンプを見せたくはないでしょう(そして、ともかく、MopsウィンドウやfWindはそこにはないでしょう)から、あなたのエラーワードは、何であれあなたのアプリケーションにふさわしいことをなすべきであり、おそらく、BYEを実行して終了し、Finderに戻ることになるでしょう。スタートワードと同様、これも終わりのセミコロンを抜けてはいけません。というのは、そうなるとMopsはMopsスタイルのエラーメッセージとスタックダンプを表示しようとするからです。 さて、ダイアローグボックスについて続けましょう。 ‘Include fWind’と‘fWind visible’はチェックのないままにしておきます【PowerMopsにはこれらのチェックボックスはありません】。これらは、"拙速(quick and dirty)"アプリケーションに利用できるキーボード入力およびテキスト出力用の簡単なウィンドウに関係しています。これは、実は、Mopsの基礎的な核部分がMopsシステムの残りの部分をロードする前に使用しているものです。Curvesは、自分自身のウィンドウを持っていますから、このウィンドウを使うことはありません。ですから、これらのボックスはチェックのないままにしておいて、InstallにおいてfWind用のリソースを無視してもよいことを教示するわけです。同様に、インストールされたアプリケーションにはコード生成機能は必要ないといえるでしょう。 もうダイアローグの必要な部分は全て埋めましたので、OKをクリックしましょう。このとき、標準的なファイルナビゲーションダイアローグが現れます。アプリケーションをインストールする場所のフォルダーを選択して、Saveをクリックします。PowerMopsは直ちに終了するでしょう。それから、あなたが選択したフォルダーをのぞいてみれば、新しいアイコン(68k MopsとPEF/CFM PowerMopsの場合)またはフォルダー(Mach-O PowerMopsの場合)で、‘Curves’という名前のものをみつけることができるでしょう。これがあなたのインストールしたアプリケーションです。 しかし、このアプリケーションはまだ起動できません。メニューリソースが含まれていないからです。 68k MopsとCFM PowerMopsの場合: その追加はリソースエディターで行うことができます。ResEdit、あるいは何らかのリソースフォークエディターでいいですが、それを起動し、demo.rsrcファイルを開きます。demo.rsrcファイルをダブルクリックするだけでも大丈夫でしょう。そして、‘全選択(Select All)’をした上で‘コピー(Copy)’します。それから、(まだResEdit上での作業です)Curvesのアプリケーションファイルを開き、‘貼付け(Paste)’します。それからアップデートされたCurvesを保存し、ResEditを終了します。 Mach-O PowerMopsの場合: ファインダー上でdemo.rsrcのコピーを作り、それを(名前はdemo.rsrcにして)、新たに作られたフォルダー構造の中の‘MacOS’フォルダーに入れます。それから、‘Curves’というフォルダー名の後に、‘.app’拡張子を追加します。 あなたの新しいアプリケーションは、適切なアイコンを持っておらず、原始的なアプリケーションアイコンしかついていないでしょう。しかし、それ以外は完成しました。ダブルクリックして起動することができます。 アイコンに関しては、Part IIの第五章でお話しします。 これから進むべき道 あなたはもう随分と Mops とオブジェクト指向プログラミングを経験しました。Mops が Macintosh ツールボックスとどのような形で連絡して、あなたのプログラムとMacとの間の通信の方法を単純化しているのか、についても見てきました。いまや、あなた自身のプログラムで実験を始めるべきときです。Part II のいくつかの章は、Macintosh上でMopsプログラミングを行う際のもっと細かな点について詳細に説明しているので、あなたの進むべき道を示してくれるはずです。 Mops辞書にある既定義クラスとワードのパワーを知ることは重要です。読んで済ますことからは得られないものもあるとはいえ、このマニュアルのPart IIIで詳説された既定義クラスのメソッドを一定時間かけて研究して、あなたに利用可能な構築素材を見つけるようにするのもよいでしょう。 Part IVのMops索引や用語集をながめるのもよいでしょう。そこには、メソッドのために指定できる演算についてのアイディアを与えてくれる、たくさんの組み込みワードを見つけることができるでしょう。 このマニュアルや様々なMopsファイルの中には、利用可能なたくさんの参考資料が含まれています。それら利用しつくす最良の方法は、独自のクラスの定義に取りかかり、あなたがつくったオブジェクトにメッセージを送る実験をすることです。 ちょうど話し言葉と同じように、Mopsについても、その実地経験を多く積めば積む程、より短時間で難なく使いこなせるようになることでしょう。 チュートリアル目次へ 前へ レッスン21 最終
https://w.atwiki.jp/hmiku/pages/25899.html
【登録タグ T 曲 蜥蜴P 鏡音レン】 作詞:蜥蜴P 作曲:蜥蜴P 編曲:蜥蜴P 唄:鏡音レン 曲紹介 人を信じるって難しいことなのです ピアノが印象的な切ないバラード曲。 歌詞 凍てつく寒い冬のあの日 あなたと初めて出会った夜に 昔の心の傷跡を慰めあっていた もう 誰も信じない 信じきれない そう思ってた 心の闇に 光をくれたから 神様 もう一度誰かを愛してもいいでしょうか でも裏切られることも知っているから これが 最後の恋 巡りめぐる季節の中で たくさんのお互いのことを知った また誰かを愛し信じることが出来るようにと もう 二度と傷つきたくないと願い お互い信じ合えていれば大丈夫だと思った 神様 もう一度誰かを信じる事が出来て たとえ叶わない想いだと知っても そう これが 最後の愛 もう 誰も信じない 信じきれない お互い信じ合えていれば叶うものだと思ってた 神様 もう一度誰かを愛してもいいでしょうか たとえ叶わない想いだと知っても もう これが 最後の恋 コメント 名前 コメント
https://w.atwiki.jp/imops-forth/pages/37.html
Hex Decimal 数字の表記は、デフォルトでは10進数で解釈される。しかし、モードとして16進数解釈に切り替えられる。そのためのワードがHEXである。 HEX ( -- ) \ 16進数モードに切り替える 数字はすべて16進数で表記されていると解釈される。したがって、HEXを実行しておけば、コード内に、BEEF とかCafeとかdeadなどと書いても、そのような名前のワードを定義していない限り、数字として解釈される。10進数に戻すには、DECIMALを実行する。 DECIMAL ( -- ) \ 10進モードに切り替える なお、モードとしてだけではなく、$を付けることで16進数表記の数字であることを示す方法がある。標準forthにおいてはインタープリタの特性として、$の後に空白なく直接続けて数字を書くやり方が導入されている。例えば、 $ABCD \ -- 43981 (10進表記では) のように書けば、$ABCDという名前のワードが定義されていない限り、16進数の数字と解釈されるわけである。 これに対して、Mopsでは、$をワードとしている。つまり、$の後には空白が必要である。それに続くワードを16進表記の数字と解釈する。 $ ABCD なお、forthの数字解釈の基数は、グローバルVARIABLEであるBASEによって管理されている。このVARIABLEに格納された数値が基数となる。2から36までの数値が許容されている。36進数というのは、要するに、アルファベットをZまで数字として扱うわけである。適正範囲内かどうかチェックなどはしないのがforthのデフォルトなので、BASEに0のような数字を格納しないように注意しなければならない。 なお、PowerMopsではBASEはVALUEになっているので、! や @ を用いてはならない。iMopsではVARIABLEである。 Mopsのスタックビューでは、モードにかかわらず、常に符号付きの10進表記と16進表記が併記される形で表示される。 なお、forth標準の数値インタープリター拡張は、16進数表記であることを示す$に加えて、10進数と2進数表記の数字であることを示す#と%が導入されている。これらはワードではなく符号であるから、続く数値リテラルとの間に空白を入れてはならない。特に#は別途コアワードとして定義され、単独では全く別の機能を持つので、注意を要する。 #3423 \ モードにかかわらず、10進表記の3423であることを示す。 %1101 \ 2進数として解釈される(=13(10進)=D(16進))。 Mopsでは採用されていない。iMopsでは、インライン定義内にリテラルを用いるためにこれらの記法が必要とされている。 実用上は、進数の基数モードの変更は、よほど低レベルなコードを書く必要がある場合以外は利用しない。実際、混乱しやすい。$を用いて局所的に16進表記を用いる以上のことは、アプリケーションプログラムで必要になることは滅多にない。 . (ドット) .R . は一文字ワードであり、スタック上の値を取り、現在の進数モードでスクリーン上に印字する。ドットと呼ばれる。文字としてはピリオドに使う文字である。 . ( n -- ) 数字は左詰めである。 他方、.Rは表示すべき数と、それを表示する枠の字数の2つの値を取って、枠の中に右詰めで表示する。 .R ( n1 n2 -- ) 例えば、枠の桁数を4で統一すれば、 12 4 .R cr 123 4 .R cr 3 4 .R 12 123 3 のように表示されるわけである。.Rにおいても現在のBASEの値が基数として用いられる。数値の桁数が指定された桁数よりも大きいときには、左側に空白を置かず、ただ数字がその桁数のまま表示される。 . は計算結果を表示させるためにも用いられるが、デバッグのときに、値をdupした上で . することによって、ワードの途中で渡されている数値がどうなっているのか検査するために用いたりもする。GUI環境のアプリケーションではあまり使わない(iMopsでは一般のウィンドウに表示するためには使えない)。 .H U. U.R U.H スタック上の数値を取り出してスクリーンに印字するワードであるが、それぞれ表示様式を特定して表示する。 .Hは、スタックの値を取り出して、それを16進数表示でスクリーンに印字する。 .H ( x -- ) \ 16進数(hexadecimal)表示で数値を印字 例えば、 10 .h A のようになるわけである。 U.は、スタック上の値を取るが10進数として印字する。ただし、入力は符号なし数と解釈される。つまり、負の数値リテラルは大きな正数として解釈され表示される。 U. ( u -- ) \ 符号なし数を10進数で印字する Forthの標準規格は上のようになっていて符号なし数という種類の数値があるかのようである。このような表現になっているのは、符号なし数の最大値に限界があるforth環境の場合、uがその限界を超えているなら動作が保証されないこともありうる、ということであろうか。 U.Rは.Rの符号なし版であり、符号なし数を決まった桁数枠に右詰めで表示するのである。 U.R ( u n -- ) U.Hは、forth標準ではないが、Mopsでは定義されている。内容は、もちろん、U.と.Hの2つの組み合わせであり、符号なしの16進数表記で、スタック上の値を印字するのである。 U.H ( u -- ) # # #S # これら暗号のようなワード群は、数値を数字の文字列に変換するためのものである。これらのワードはforthコアとして定められている。しかし、文字列に変換される数値は符号なしダブル整数仕様であることになっている。 ダブル整数とは、スタックの項目を2つ使って整数を表記する方法である。32ビットシステムなら8バイト数(約922京(1019弱))まで、64ビットシステムなら16バイト数(約170澗~1038)まで利用できるようになる。スタック上の表現は、比喩的にいえば「リトルエンディアン」である。つまり、下の方の桁部分に当たる数値をまずスタックに置き、上の方の桁に当たる部分をその上に置く。1セルバイトの範囲内の数値であれば、正の数なら上の桁に当たるトップアイテムは0であり、負の数なら-1である。 # # の中で用いられるダブル整数は規格上正の値に限定されているので、取り扱える値を1セル数に限り、上のアイテムは0として切り捨てる扱いをしている環境もあるようである。実際、32ビット環境以上では、ダブル整数の必要性は薄い。16ビットパソコン時代の遺物ともいえる。 ダブル整数の記法は中間にドットを入れる。例えば、123.456とすれば、数値としては123456のダブル整数として解釈される。 この場合、上のセルには0、下のセルには123456が格納される。PowerMopsでは、doubleという名前のオプションファイルを ロードすれば利用できるが、iMopsではダブル整数のリテラルを読み取る機構は実装されていない。 さて、本題に入る。 #は数字を文字列に変換する手続に入ることを標すワードである。準備をするだけであり、特にスタック効果はない。 # ( -- ) \ 数値の文字列への変換を準備する。 # は締めくくりをするワードであり、残っているダブル整数のスタック値は落とし、文字列のaddr lenをスタックに置く。 # ( ud -- addr len ) 符号なしダブル整数はスタックコメントには"ud"と1つしか書かないが、実際のスタックアイテムは2つである。 #と#Sは、これらの2つのワード # # の間でしか意味を持たないワードである。 #は、スタック上のダブル整数をBASEの値で割り、その余りを数字に変換して文字列バッファに格納する。つまり、現在の進数表記で下から1桁ずつ変換していくのが#である。 # ( ud1 -- ud2 ) \ ud1をBASEで割り、ダブル整数の商をスタックに残し、剰余を文字としてバッファに右詰めで格納する。 数字は右詰めになるので、複数個連ねれば、#の個数の桁分を数字文字列に移すことになる。最後の# は残った数値は捨ててしまうので、例えば、下の5桁しか必要ない場合には、#を5つ書けば良いことになる。その場合、5桁より小さい数値については、5桁になるまで左側に0が詰められることになる。 #Sは、ダブル整数値が0になるまで#を繰り返す。つまり、数値を文字列に変換し切るのである。 #S ( ud1 -- ud2 ) \ ud1を数字列に変換する。ud2はダブルの0である。 iMopsでは127ビット数まで対応している。ただし、負の数、つまり128ビット目がオンの数を与えると、機械が例外を投げる(デフォルトではクラッシュする)ので注意を要する。また、#や#Sに付いても、 # # の外で実行した場合の保護は特に設けていない(マシンエクセプションとなる可能性もある)。 例としては、 73 0 # # # # # # type 0073 -1 0 # #S # type 18446744073709551615 \ 64ビットの場合 のようになる。 ちなみに、iMopsで、 -1 -1 1 # #S # type とすると、容易には読めない大きな数値が表示される。 仕上げの# は、バッファーの数字列のありかを指し示すが、この数字列は、文字列バッファーを用いる他のワードを実行した後には、上書きされてしまう可能性がある(実装に依存する)。特に、 # # によって生成された数字列は、もう一度 # # を実行すると消えてしまう可能性がある。したがって、もしも結果を保存しておきたいのであれば、次の使用までに、専用のデータフィールドを確保して、そこに内容をコピーしておかなければならない。文字列のコピーの方法は、別のページで説明するが、MopsならStringオブジェクトにPut すればよい。 なお、#と#Sは混用もできる。たとえば、あまり意味はないかも知れないが、 345 0 # 0 0 # # # 2drop #S # type 345000 765 0 # #S 98 0 # # 2drop # type 98765 のように数字を追加して桁を増やすこともできる。 .S スタックの現状を保持したまま、スタック上の全ての数値についてスクリーンに印字するのが.Sである。表示の様式は実装に依存する。Mopsではやや騒々しく、メッセージ風に表示される。スタックの状態を変化させないので、要所に.Sをおけば、デバッグに便利である。スタックの状態があまり見やすくない環境では、時折、これを用いてもよい。 ? 文字化けではなく、クエスチョンマークのワードがあるのである。ワード? は、アドレスを入力として、そこに格納された1セル幅の数値を、スクリーンに印字する。 ? ( addr -- ) これは、"@ ."と同値である。これも、デバッグ以外の目的では滅多に使われないように思う。オプショナルワードであり、Mopsでは定義されていない。しかし、Starting ForthやThinking Forthといった有名な本のコード例には出てくる。 次 文字列操作
https://w.atwiki.jp/ops_plas/pages/11.html
ここでは今ある情報を集めここへ掲載しております また情報だけがたよりなので情報がございましたら一番下のコメント欄に記入してください ※ガセネタもあるかも知れませんが暖かい目でご覧ください (?)がある奴はガセネタ度が高いものです キャラクターなどのこと 兵士について OPSの兵士はOPS+へ移動が出来る (ちなみにOPSへの移動は出来ない) 兵士が成長するとライフ・スタミナだけではなくスキルも成長する(AAA様) 又キャリアも成長する 新キャリア・敵を主観で見ると能力を見破る『人事部長』、味方を回復する『針治療士』など 130種類のキャラクターの種類 200名まで兵士登録可能(OPSでは100名) 変更されると思われるキャラクター ロイキャンベル(OPSではチートキャラとされている) 追加されると思われるキャラクター ライデン オールドスネーク(4で出てくるスネーク) ジョニー(MGS3の牢獄に居た兵[見た目はGRU兵と一緒だが額にJと言う文字が書かれている] ゴルルコ兵(GRU兵に似た奴) 天狗兵(黒いやつ) ゲノム兵(白い奴) オルガ(サイボーグ忍者 ハイテク兵 (/JIN/様) ※ゴレンジャー兵(赤・黄色・緑・ピンク・青) ※東京・北海道・他などのご当地兵(?) ※2で出てきた兵士 ※名前不明 (注)※がついたキャラクターの名前は仮名ですのでご注意ください またその兵士の名前がわかる人居たら下にあるコメント欄に記入してください オンラインでの変化 前回のオンラインマップに加えMGS3の好評だったマップや新しいマップ追加される 15マップ追加される (OPSのマップ8なので+では7追加される) P.B.P(MILITARY様) K.H.B(MILITARY様) K.H.C(MILITARY様) クラスノゴリエ(?) 工場(?) 古砲の戦野(?) REX 星当てルールが追加される スニーキングルール(1vs5)が追加される(?) 4対4になるらしい(?) 初心者には若葉マークが追加される 初心者専用サーバーが出来る チート対策が追加される ボイス付チャット・アクション(踊ったり)が出来るようになる フカワ(MGS3オンライン参照)が出来るらしい(?) トレーニングモードが追加される(?) バグ技(物の中に入ったり)が出来なくなるらしい(?) オフラインでの変化 ストーリーモードがなくなり∞モードが追加される 詳しくは∞モード参照 その他 メタルギア4とリンクできるらしい(?) メタルギアオンライン2βとの対戦が可能に(?) あたらしい武器が追加される SOCOM レーザーポインター装備サプレッサー装備(MGS2サンズ・・・) P90 ここ参照で ファマス ここ参照で AKS74-U AK-47にサプレッサー装備(MGS2サンズ・・・) M4A1 たぶんoldスネーク用(MGS4) 忍者刀 ライデン用武器 (MGS2サンズ・・・) 刀 一般兵装備用? (ライデン用とは構え方が違う・スキルが高いキャラしか装備不可?) 包帯 HPが回復する (未確認・ON専用?) カメラ 写真が取れる (未確認・ズーム可能) ∞バンダナ 玉が無限になる (未確認・チート対策?) OPSとも対戦可能(?)(ただし新マップは不可能) 新たに「首切り」「首折」(CQC)が出来る(?) 出血表現が出る(たぶん絶対ありません)