投稿者
 メール
  題名
  内容 HTMLタグ画像・ファイル<IMG>タグが利用可能です。(詳細)
    
  ファイル1
  ファイル2
  ファイル3
アップロード可能な形式(各1MB以内):
画像(gif,png,jpg,bmp) 音楽(mmf,mld) 動画(amc,3gp,3g2)

 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ teacup.コミュニティ ]

投稿募集! スレッド一覧

スレッド作成 他のスレッドを探す

[PR] 派遣アルバイト アクトタウン 愛知の求人・転職  
teacup. ] [ 無料掲示板 ] [ プレミアム掲示板 ] [ teacup.コミュニティ ] [ ブログ ] [ チャット ]

全100件の内、新着の記事から30件ずつ表示します。 1  2  3  4  |  《前のページ |  次のページ》 

日本クイズ

 投稿者:猫ノ宮  投稿日:2009年11月 4日(水)00時14分39秒
  罫線が見えにゃーけど、ノートに描くのやめたんですかにゃー。  

空気〜

 投稿者:偽煩奴、  投稿日:2009年11月 3日(火)11時23分47秒
  「WBの絵掲」なら「原作ファン」も皆無に近いだろうから、大丈夫かなという考えもあったのですが、
そうすると、ネタの意味が不明な漫画になっちゃうじゃん。。という矛盾もあったりで反省。
orz

>「トムヤムクン」
頭痛のタネは絶えず供給されるようで( ̄人 ̄)
皆で新作を描いたりレスやらでコツコツと堆積させていってですね、
突然ゼロセンのおじさんがやって来て、
「日本男児の気迫が伝わる良い絵です」
ちゃぶ台返しと...
 

まぁまぁ

 投稿者:ささき  投稿日:2009年11月 3日(火)09時33分41秒
  >匿名ぎぼんぬさん
「WBの絵掲」という空気なら大丈夫ですヨ、きっと。
でも「東洋鬼」は困ったなぁ…(;´Д`)
またスルー攻撃かにゃ?
 

う〜ん

 投稿者:偽煩奴、  投稿日:2009年11月 2日(月)17時06分59秒
編集済
  私はアニメや二次創作とは普段縁遠いのですが、
今回は、私もやっちゃいました。
ホr...やロレn...には、久々というか、ペリーヌやコナン、ラナくらい愛着を感じています。
しかし、

>あるいは原作に異質の物語を混合して
>新たな世界観を提示する創作については、
>それが好意的に受け取られる保証はありません

ぴったり該当かも。
難しいですねぇ。。
 

それじゃ

 投稿者:ささき  投稿日:2009年11月 2日(月)06時35分6秒
  面白くするために、お蔵入りとなった説教文面を晒してみます。
(最終案じゃないけど)

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

こちらでは始めまして&お久しぶりです。WBお絵かき板のほうでは管理者と
して接させて頂きましたが、こちらでは一介の常連として発言させて頂きます。

WBお絵かき板は外来さん・一見さんの投稿ウェルカムな所ですが、BBSの
流儀は板ごとに異なります。しかし、そのルールが明記されているわけでもあり
ません。自分では普通に・常識的に振舞っているつもりでも、気が付かない
うちにその板のマナーを侵しているかも知れません。いわゆる「空気を読む」
という奴ですね。


さて、私は二次創作そのものは否定いたしませんが、二次創作を他人に薦めるに
あたっては慎重になるべきだと思っています。相手が熱烈な原作ファンであった
場合、二次創作そのものに嫌悪感を持たれる場合すらあります。
原作の世界観に沿った創作であっても、作品に対する世界観の持ち方は読者
それぞれ微妙に違うかも知れません。同じ「原作ファン」同士であっても、
「なるほど、この人はこの物語をこういう世界として受け取ったんだな」と、
その差異を容認しあえる相手ばかりとは限りません。
まして原作世界を覆しかねない創作、あるいは原作に異質の物語を混合して
新たな世界観を提示する創作については、それが好意的に受け取られる保証は
ありません。

ヴァルヴィヒェン・バッフェさんが御自分のWEBサイトで御自分の物語を
展開なさるのならば、私ごときが口を差し挟む筋合いはありません。しかし
他人様の掲示板に客人として訪れるからには、客人として守るべきマナーが
あると私は思っております。

単刀直入に申し上げて、家主のしろさいさんに対しいきなり「自分を見知って
いるはず」という態度で「スピンオフ二次創作を書かせていただくやもしれ
ませぬ」と「覚悟」を促す書き込みをなさることは、その時点で相当に失礼を
なさっていると私には感じられます。
あまつさえ、しろさいさんが貴方を覚えていなかった事に対し「いえいえ、
私の名前などその程度のものでしょうから」「素直に教えるのが礼儀」と謙遜
されながら、素直に自己紹介すらできていません。
「WBのお絵かき掲示板にお邪魔していた者です」と一言書けば済むだけの筈
です。それが何故「書いている私でさえ理不尽と思う」「面倒なようでしたら」
「100倍手っ取り早いと思われます」といった、持って回った婉曲な表現になら
ねばならないのでしょうか。ヴァルヴィヒェン・バッフェさんにとってそれは
照れ隠しのつもりなのかも知れませんが、行きすぎた謙遜や婉曲は、時として
「嫌味」として受け取られる可能性もあるのです。

まず、お互いの立ち位置を確認しましょう。「どうやって?」それは説明でき
ませんし、説明もしません。説明されなければ判らないようならば、無闇に
他人様のページに立ち入るべきではないでしょう。

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

(((;´Д`)))
 

白菜さんとこの

 投稿者:P-kun  投稿日:2009年11月 2日(月)00時55分25秒
  待避所ハケーン

ああ、しかし皆同じこと考えてたんだなあ・・・
しかも面白くもなんとも無い・・・
 

退避

 投稿者:xx、  投稿日:2009年11月 1日(日)16時28分0秒
編集済
  ちょうど、白菜斎さんとこに狼の物語のことでまったり書き込みをしたかったんですが、
強磁性(これはある種の人々を引きつけるささきさんの体質みたいですね)じゃなくて、
共時性というか、orz
避けたかったんでゴニョゴニョ...
ぜんぜん関係無い話題で薄めてしまおうか、白菜斎さんも大変だろうしと思っていたら、
ふよんさんがかぶせてくれてエガッタエガッタ。
 

ぎにゅー特戦隊

 投稿者:ダダめきふよん  投稿日:2009年10月31日(土)10時20分15秒
   なんか自意識過剰な変わった人がいるなぁ、と思ったけど、その人のことを私はぜんぜん知らないので、スルーするしかなかったのでした。

http://www15.plala.or.jp/icepack/

 

うにゅー

 投稿者:ささき  投稿日:2009年10月30日(金)11時53分32秒
  自分とこの板がアレなのもナニなので保守カキコ。
いや別に何があったわけでもないけど。
○ふよんさんはスルーで、○ろ○いさんは回避機動なのね。
なるほどなるほど。
ガチで一撃離脱かけようなんて思ってたあたしがバカだったわ。
戦わずに勝つことこそ兵法の妙なのね、へむへむ。
 

ソースの暗黒麺

 投稿者:ささき  投稿日:2009年 7月12日(日)15時17分24秒
  というと、やはりペヤング焼きそばでしょうか…。

某所ASNQでまたもやあげつらい個人攻撃。
おいらはあそことは縁を切ったからもう如何でも良いけど、
人間って学ばないものなのね。
過去3000年くらいはこんな事続けてきたんだろうなぁ。
個人は変わらない。たとえ変わったとしても、その成果が
出るころには死んでしまう。若い者が馬鹿で思慮が足りない
ことは人類の美徳であると同時に、人類の限界なのかも
知れません。
 

今頃になって思った

 投稿者:猫ノ宮  投稿日:2009年 7月 3日(金)00時43分32秒
  あのイケメンが「スシの暗黒卿」だったんですにゃ!
ソースを使うのにゃ、ルーク!
 

カトリたん

 投稿者:ささき  投稿日:2009年 6月10日(水)14時52分22秒
  >ばくさん
感想ありがとうございます(^^)。気楽にさらさらっと描いてみたカトリですが、かわいく仕上がりました。
アベルはねぇ…あれ以上デフォルメしてしまうと、ほとんどウナギイヌ状態になってしまう問題が(笑
 

香取

 投稿者:ばく  投稿日:2009年 6月 8日(月)19時18分7秒
  わーい,カトリだカトリ(^▽^
アベルはなんかこう…
もっと胴長短足なような気がします(爆

http://baku.sakura.ne.jp/

 

絵掲今昔

 投稿者:ささき  投稿日:2009年 6月 1日(月)11時12分7秒
  某所お絵かき掲示板について、getpic による投稿すなわちアプレット直描きで投稿された作品が幾つあるのか、cgi のログファイルを眺めてみた。100 投稿あたりだから、おおむねそのままパーセントと読んで良い。

1000 番台 26
1100 番台 45
1200 番台 49
1300 番台 54
1400 番台 46
1500 番台 51
1600 番台 35
1700 番台 25
1800 番台 29
1900 番台 36
2000 番台 28
2100 番台 18
2200 番台 12
2300 番台 20
2400 番台 6
2500 番台 6
2600 番台 7
2700 番台 15
2800 番台 7
2900 番台 3

思っていた通り、激減しているなぁ。2900 番台はまだ半分強だから、6〜7 投稿が落としどころか。はじめて 10% を切った 2400 番台は 2006/9〜2007/2 の頃。2700 番台で一時的に上がっているのは…あぁ、すいすいさんが昼休み1作計画に挑戦していた影響だわ。

8年以上も絵掲が続いていること自体が奇跡みたいなものだし、それは素晴らしい作品を投稿してくださる絵描きさんと、素敵なコメントを付けてくださる閲覧者の皆さんあってのこと。これ以上の管理者冥利は無い。現状に文句を付けるつもりは全く無い。

でも、1000 番未満の絵掲ログを見ると、それこそ上手い絵・ヘタな絵・シロウトの絵・玄人の絵、困った絵にネタ絵に意味不明な絵が仲良く並んでいた時代を懐かしく思ってしまうのだ。それはおそらく、過ぎ去った日々に対する郷愁が生み出す幻影に過ぎないのだろうけど。
 

おつかれぎみ

 投稿者:ささき  投稿日:2009年 4月30日(木)16時54分16秒
  >猫の宮さん
整数みたいな単純型をオブジェクトと別枠扱いにするか、それとも整数もあくまでオブジェクトと扱うか、そのへんは言語体系によって違うとこですにゃー。

>zzさん
.asm ファイルをアセンブルすると .obj ファイルが出来るから当然なのにゃー。
 

こんらんしてみる

 投稿者:uta  投稿日:2009年 4月20日(月)18時45分33秒
  アセンブラだと、マクロの定義がクラスで、展開されたコードがオブジェクト?  

中身が同じ

 投稿者:猫ノ宮  投稿日:2009年 4月19日(日)20時18分45秒
  同じ回路をたくさん並べることは良くある話で、極端に言えばメモリなんか1bitの記憶回路が容量の分だけずらりと並ぶわけですにゃー。
そう言う場合、verilogではモジュールとインスタンスという形で対応しますにゃ。

module neko(A, B, C, clk);
input A;
input B[7:0];
output C;
input clk;
(以下、回路記述続く)
endmodule

としてモジュールの内部回路の定義を書いておいて、下のようにインスタンスを並べますにゃー。

neko tama(.A(a), .B(ba), .C(C[0]), .clk(clk));
neko siro(.A(a), .B(bb), .C(C[1]), .clk(clk));
neko momo(.A(a), .B(bc), .C(C[2]), .clk(clk));
neko mie(.A(a), .B(bd), .C(C[3]), .clk(clk));

tama, siro, momo, mieというインスタンス名を持つ、中身が同じで入力ポートBに違う信号が入る回路が4つ合成されますにゃ。Cは出力のつもりで4bitがそれぞれのインスタンスから1bitずつ出てくる感じにゃ。

まあ実際にはこんな無秩序なインスタンス名にすることはありませんけどにゃー。Cの桁に合わせてneko0, neko1みたいに番号振るとかにゃ。


てゆーか、Visual Studio 2008 ヤダー! にゃ。
 

イデア論とか、そっちの方には行かない

 投稿者:ささき  投稿日:2009年 4月19日(日)07時10分57秒
  >猫の宮さん
ビットフィールド型ならC言語にもありますにゃ。滅多に使わないけど。

ハードウェアにおける「構造体」や「オブジェクト」の考えは、デバイスに
なるんじゃないですかにゃ。たとえば UART オブジェクトには command, status,
rxdata, txdata というメンバ(レジスタ)があって、UART が複数乗った基盤とか
SoC はつまり UART 構造体の配列なんですにゃ。

struct uart {
  unsigned char config;
  unsigned char status;
  unsigned char rxdata;
  unsigned char txdata;
};

struct uart uart_channels[2];

ここで config にデータが書き込まれれば UART が初期化されたりモードが
変わったり割り込みがクリアされたり、txdata にデータが書き込まれれば
シリアライザーのシーケンサが初期化されてシリアル送信が開始されると
同時に status の TxBusy ビットが立ち、シリアル送信が終了すると TxBusy が
落ちたりすることになるのにゃ。

この「一連の挙動」じたいはデバイスが同じである限り 1ch でも 2ch でも
変わらないのにゃ。だからソフトウェアではこれを処理するのにサブルーチンや
ポインタを使うのですにゃ。

こういう回路を HDL でどう記述するのか分かりませんが、回路に落ちた段階で
物理的に2つの回路が存在するわけですから、ソフトウェアの場合と等価では
ありませんにゃ。しかし、「どうせ回路に落ちたら同じだから」と、ソースごと
丸コピーして「uart1_xxxx」「uart2_xxxx」などラベルを全置換して、「中身が
全く同じで名前だけ違う」HDL を組むわけはないですにゃ?


ちなみに、UART と言っても昔なつかしい 8251 とか 6850 とか Z80SIO とか
Z8450 とか NS8250 とか、中身はいろいろありますが、「やること」はみんな
基本的に同じですにゃ。しかし、「おなじこと」をやるにも「やりかた」が
違うので、たとえば UART と連動する DMA があったとき、何かの都合で UART
デバイスが差し変えられたら、DMA 側の回路にも変更を加えなければならない
かも知れませんにゃ?これがソフト屋のいう API 互換性問題ですにゃー。

特に PC-9801 の SIO まわりみたいに、8251 単体で足りない機能の一部を外部
回路で補っていたりする場合(たしか 98 の場合は CTS 状態をプリンタポートの
空きビットで読むようになっていたはず)、移植性や互換性は著しく低くなる
ことになりますにゃー。これが所謂「プログラマーに暗黙の約束を強要する」
「きたないプログラム」ということになりますにゃ。

なかには NS16450 と NS16550 みたいに、機能拡張されていながらも見掛け上の
互換性を保っているデバイスもありますにゃ。これは C++ で言うところの継承に
近いものですにゃ。「やること」が同じであれば「やりかた」も合わせてしま
おう、という考えですにゃ。これが進んでゆくと純粋仮想クラスみたいに、
インターフェースだけ決まっていて、機能の中身はカラッポというものが出て
きたりしますにゃ。


>zzさん
クラスとインスタンスの考えは、冠詞のない言語である日本語ではなかなか伝え
にくい概念ですにゃ。

これが英語であれば、例えば名詞「Pen」は「ペンという概念」を現した単語で
あり、現在過去未来に存在する、存在した、存在するかもしれない世界中全ての、
「ペンという概念に当てはまるもの」を意味します。つまり、冠詞のない名詞
は「クラス」です。その「ペンという概念に当てはまる無数の候補」の中から、
どれか一つに絞り込むために冠詞をつけます。するとペンはインスタンスを持ち、
「概念としてのペン(クラス)」から「実体としてのペン(オブジェクト)」になり
ます。

不定冠詞を付けた「A Pen」になると、これは「現在過去未来に存在する、存在
した、存在するかもしれない、ペンという概念に当てはまるモノのうち、どれか
一つのモノ」を意味することになります。つまり「ペンというクラスのインス
タンス」を指しますが、しかしその指している実態はどれでも良いという意味で
あり、ある意味ポインタのようなものです。「I need a PEN!」と言う場合、
ペンであれば誰のペンでも、どんなペンでも良いわけです。プログラムでいえば

draw(pen_t* a_pen)
{
  a_pen->Draw("ABC");
}

みたいな感じです。この場合、a_pen が pen_t という基底クラスから派生した
オブジェクトであり、Draw() というメソッドを持ってさえいれば何でも動作
します。黒のボールペンを渡せば黒くて細い ABC が描かれ、油性の赤ペンを
渡せば赤くて太い ABC が描かれます。

定冠詞を付けた「The Pen」になると、これはもう名指しでオブジェクトを指して
います。その会話の前後で言及され、会話者の両者が共通知識としてその存在を
認識している「あのペン」です。「I need the PEN!」と言う場合、彼が求めている
のは現在過去未来を通して、世界中に1本しか無い、特定の1つの「あのペン」
なのです。プログラムでいえば

draw()
{
  extern pen_t the_pen;
  the_pen.Draw("ABC");
}

ですな。

という感じで、むしろ英語の「名詞と名詞句」「定冠詞と不定冠詞」による
文意ニュアンスの違いを説明するのに、オブジェクト指向の考え方が(相手が
それを理解している限り)便利だったりします。にゃー。
 

いんすたんとなくらす

 投稿者:kazz  投稿日:2009年 4月17日(金)15時14分26秒
  なんか、昔に・・・カメラというクラスを定義して、部屋の数カ所にカメラAとかカメラBとかってインスタンスを・・・ぐちゃぐちゃ習った気がする。
で、そういうヤツの最後に電子レンジだか恒温槽の制御ソフトを組んだような・・・。
コーディングというよりも、モデリングだったけど。
 

HWとか

 投稿者:猫ノ宮  投稿日:2009年 4月15日(水)20時33分30秒
  ハード寄りのverilogだと、メモリの特定アドレスに記録されてるデータを読み出して、ビットの意味ごとに
特定のレジスタに格納する、て回路はこんな記述になりますにゃー。
ポインタに相当するaddで指定されたアドレスから読んできたデータで、いくつかの情報がセットで出てくる
ので、構造体ぽいものではありますにゃー。

input clk;
input [15:0] add;                    // メモリのアドレス線16bit

reg [31:0] mem [0:65535];        // 32ビットレジスタ配列64kワード(メモリ)
wire [31:0] memout;             // メモリの出力(の配線)

reg flag1, flag2;            // なんかのフラグ1bit×2
reg [6:0] dx, dy;            // 移動方向7bit×2(符号付きかどうかはその後の回路次第)
reg [7:0] xx, yy              // 現在位置8bit×2

assign memout = mem[add];         //アドレスaddのワードの情報をtmpに代入

always @(posedge clk)
begin
    flag1 <= memout[31];   // 32ビットのMSBをフラグ1に代入
    flag2 <= memout[30];   // MSBのいっこ下をフラグ2に代入
    dx <= memout[29:23];  // bit23から29の7bitをdxレジスタに代入
    dy <= memout[22:16];
    xx <= memout[15:8];
    yy <= memout[7:0];
end

ここでalwaysのbiginからendまでに書かれた6つのレジスタの代入式は、クロックclkの立ち上がりのタイミングで同時に
行われますにゃ。書いてある順番は関係なしにゃ。
assignの代入は非同期で、単に配線してるだけなのでクロック関係なしにゃ。

サブルーチンてゆーか関数に相当するのはverilonではモジュールで、返り値が無い代わりに引数のところに(上では書いてないけど)入力、出力、双方向のポートを必要に応じて宣言することになりますにゃ。
これも複数のモジュールがあれば全部同時に動いてて、関数みたいにCPUが順番に処理してくわけじゃないのにゃー。
 

あせんぶら

 投稿者:ささき  投稿日:2009年 4月15日(水)16時55分25秒
  >ウタさん
>某chに貼りたいぐらい。(笑
晒しは嫌アアアァァァッ!!(;TДT)

>構造体
構造体でプロトコルメッセージ定義すると、最適化によってアラインされたりして泣きを見たり、キャストした先が 4 の整数倍じゃなくってアドレスエラーで泣いたりします。

>DDT とか SID
Z育ちの坊やが DDT を使うと、MVI とか LHLD とかのインストラクションコードを見てパニックに陥ります。「M ってなんだ、M なんてレジスタがあったのか!」とか。
あぁ、でもオイラも intel ニモニックなんか忘れたな。
8086 の糞アセンブラの文法もだいぶ忘れた。
mov es, seg[label] とか書くんだっけ?
segment 宣言とか assume 宣言とかも綺麗さっぱり忘れたわい。
有難いことじゃ。これが老人力というものか!

>最近やりたいことが
こちらは何もかもやる気が出ません。毎日全身クタクタでよろよろ歩いてます。そろそろ死ぬかもしれません。

>ぱくん
>クラス
構造体わかってない人にクラス説明してもパニクるだけなので、それは後のお楽しみなのです。

>ポインタ
猫の宮さんはIC屋さんがバックグラウンドなので、HWまわりの動作に置き換えて説明したほうが分かりやすいかと。でもアルゴリズムをロジック化するときは、ポインタもサブルーチンも関係ありませんね。
 

くぎり

 投稿者:uta  投稿日:2009年 4月15日(水)13時51分45秒
  アドレスで区切るのは、コボちゃんじゃなくて、大昔のデバッガの影響だと思いますよ。
コードだって、あちこちをORGで切るし。
最初に触ったデバッガはシンボル使えなかったから、いつもMAPファイルと印刷したアセンブルリストが必須だったし。
途中で(DDTからSIDみたいに)シンボリックデバッガになったけど、それでもRAMは見やすい方が楽だし、設計時にはメモリマップを先に作るしね。

ちなみに、件のデータフォーマットにはあちこちにパディングと称して0x40がたくさん埋め込んでありました。(コボちゃん?)
 

こーぞーたい

 投稿者:P-kun  投稿日:2009年 4月15日(水)01時46分49秒
  memset(&structShindeshimahe,0x00,sizeof(structShindeshimahe))
で初期化できるから便利!
関数の引数が長くならんので便利!

くれーしかつかわねー
だめだこりゃ・・・

ちなみに構造体の先にはクラスが待っています、うふ。

>ポインタ
シロートの子には、本の付箋みたいなもんだと説明してます。
メモリの内容が本の文章、ページがアドレス、んで付箋がポインタと。
みんないちおー納得してくれますはい。

>utaさん
>16バイトの整数倍とか256バイト単位とか
Co、Cobolのにおひがする!!
Cobolerはキリが悪いと構造体にダミー変数入れるんだぞ!
ギャーー!!
 

うーみゅ

 投稿者:uta  投稿日:2009年 4月14日(火)17時26分51秒
  いるかどうかは分からないけど、プログラミング勉強中のヒトにはとってもためになるスレですね。
某chに貼りたいぐらい。(笑

構造体・・・某システムでサーバ間のメッセージがそういう感じで、中を見るのにバイナリエディタの構造体編集機能を使わないとわけ分からないので、強引に定義したりしてイメージは掴んでました。
オイラが組んだら、16バイトの整数倍とか256バイト単位とかそういう方向にもっていったんだろうなぁ。と。
元はAS400とのI/F仕様だったらしいし。

最近、やりたいことが発散してこまります。PICとか、真空管とか、ゲルマニゥムとか、とりあえずカメラとレンズを発掘しようと思います。
 

うにゃー

 投稿者:ささき  投稿日:2009年 4月14日(火)07時40分36秒
  >それを教官殿に相談したら、なぜか不機嫌におなりあそばしたのにゃー。

その教官殿は、まだ等速等高度旋回のできない練習生から「宙返りの頂上で姿勢が狂ってしまうんですが、ラダーは右を踏んだら良いのか、左を踏んだら良いのか、どっちですか?」と聞かれたような気分だったでしょうにゃー。

>ポインタとか構造体とか

ハード的な理屈で言うと、構造体はメモリーの塊に過ぎないし、ポインタはメモリーのアドレスに過ぎません。でも、それは「エンジンとは要するに鉄とアルミの塊です」と言っているのと同じで、何の説明にもなっていません。

構造体は、一連の関連するデータを集めて一つの機能単位としたものです。
たとばエイリアンの例ならば、構造体 alien_t がエイリアン一匹に関する
全ての情報を含んでいます。

struct alien_t {
  int x; // 現座標 X
  int y; // 現座標 Y
  int v; // 現移動方向(0,1,2,3)
  int f; // 生存状態フラグ(0,1)
};

しかし X, Y については検非違使や落とし穴でも共有する情報ですから、
これを分離して

struct position_t {
  int x, y;
};

とすれば、

struct alien_t {
  strut position_t pos; // 現座標
  int v; // 現移動方向(0,1,2,3)
  int f; // 生存状態フラグ(0,1)
};

struct hole_t {
  strut position_t pos; // 現座標
  int f; // 穴の状態フラグ(0,1)
};

という書きかたができます。こうしておくと、画面にエイリアンや穴を描くとき

void draw_char(strut position_t* pos, char c)
{
  locate(pos->x, pos->y);
  putch(c);
}

みたいなサービス関数を用意しておいて、

draw_char(&aliens[i].pos, '*');

だとか

draw_char(&holes[i].pos, 'O');

だとか

draw_char(&kebiishi_pos, '&');

だとか、呼び出せば、それぞれ対応する座標に対応するキャラが描かれるはずです。「エイリアン」「穴」「検非違使」それぞれの座標保持の方法が異なっても、「struct position_t」という扱いで、そこから先の処理が共通化できるわけです。
「鉄とアルミの塊」を機能単位で分離して、それに「R-2800-10」とか名前を付けてマニュアルを整備しておけば、載っていた飛行機が旅客機だろうが爆撃機だろうが戦闘機だろうが、降ろしてしまえば(構造体ポインタで扱えば)同じ手順で整備できるようなもの…かな?
 

ぐにゃー

 投稿者:猫ノ宮  投稿日:2009年 4月13日(月)20時21分45秒
  なんでこんなとこに変数定義があるのにゃ。
どうもmainの一部として書きはじめたのが、途中から関数の記述に気が変わったみたいですにゃー。

夕べは夜9時まで映画館で「ワルキューレ」見てて鬱入ったので、サクランボチューハイかっ喰らってたのにゃー。
絶望したにゃ、ドイツの未来に絶望したにゃー!
やぱし酔っぱらって書くとダメにゃ <OΓZ~

で、書き直したにゃ。

int loop(int depth)
{
  int i;
  for (i=0;i<10;i++)
  {
    printf("%d\n", i);
    if (depth < 4)
    {
      loop(depth + 1);
    }
  }
}


一夜明けて、研修のお題も思い出したのにゃ。多重ループじゃなかったにゃ。
確か預金だか借金だかの複利計算で、kingaku *= riritu; みたいな書き方を覚えましょう(そのレベルの研修)みたいなネタだったのにゃ。
それで繰り返し利率を掛けて、掛けた回数と金額の一覧を出しましょうみたいにゃ。
繰り返しの方法に指定がなかったので、リカーシブにしてみたんだけど、なぜか回数(上のdepth相当)を%dのフォーマットで表示させる指定なのに1.00とか%fみたいな表示になる、てけったいな現象に見舞われたのにゃ。
それを教官殿に相談したら、なぜか不機嫌におなりあそばしたのにゃー。

そんなわけだから「->」が出てきたあたりで脳からケムが出てきて、さらに構造体のメンバに構造体を、とか言われて炎上して今に至りますにゃー。
ささきさんの解説のおかげで少しわかったような気がしますにゃー。


>93中練から雷電へ乗り換える

もともと半導体やさんだから、最終的にverilog HDLでハード化するのが目的なので、構造体とかうかつに使うとかえって後が面倒、てのもあるのにゃー。
だからどっちかて言うと、↓この穴ぼこに籠もってた工員を引っ張り出して「ちょっと飛ばしてみ」とか言ってるみたいなものにゃー。
http://www.asahi-net.or.jp/~VD4H-OOTK/fuji/serizawa.jpg
 

日曜の昼飯前になにやってんだか

 投稿者:ささき  投稿日:2009年 4月13日(月)03時39分38秒
  >多重ループ嫌い
ならば単ループに多重 if です。

int i=j=k=l=0;
while (i < 10) {
  printf("%d %d %d %d\n",i,j,k,l);
  if (l++ >= 10) {
    l = 0;
    if (k++ >= 10) {
      k = 0;
      if (j++ >= 10) {
        j = 0;
        i++;
      }
    }
  }
}

ぎゃー(;`Д´)/

>猫の宮さん
うにゃー、こりゃバグだらけだにゃー。まず i がグローバル変数だから、ネストの底で 10 回まわったらネストを全部抜けて終了なのにゃー。仕様どおりに動きませんにゃ。アルゴリズムとしても、関数入り口で depth++ しているのは良くないのにゃー。これは呼び出し側でやるべき処理なのにゃ。判定が関数入り口側にあるから、一番内側のループでも毎回毎回 loop(5); を呼び出して、呼び出された先で depth > 4 判定して return するのは無駄なのにゃー。

>構造体はよくわからんにゃー
それで C++ に手を出すのは93中練から雷電へ乗り換えるようなものですにゃー(;;゜Д゜;;)
構造体の意味はゲームプログラムをやってみれば判りやすいです。例えば昔なつかしい平安京エイリアン。あの敵キャラをどうやって制御するか。エイリアンに「現在位置」「現在の移動方向」「生死」の情報が必要だとして、これを

int alien_x[10], alien_y[10], alien_v[10], alien_f[10];

みたいな定義にして

void move_alien(void)
{
  int x,y;
  for (i=0;i<10;i++) {
    if (alien_f[i]) {
      x=alien_x[i]+XV[alien_v[i]];
      y=alien_y[i]+YV[alien_v[i]];
      switch (MAP(x,y)) {
      .
      .
      .

こんなコードで書くのが FORTRAN 的スタイル。
これを COBOL 的にすると

struct alien_t {
  int x, y, v, f;
};

struct alien_t alien[10];

void move_alien(void)
{
  int x,y;
  for (i=0;i<10;i++) {
    if (alien[i].f) {
      x=alien[i].x+XV[alien[i].v];
      y=alien[i].y+YV[alien[i].v];
      switch (MAP(x,y)) {
      .
      .
      .

になります。はっきり言ってあんまり違いません。むしろ単に読みにくくなっただけのように感じます。
さて、構造化プログラミングではこうなります。

struct alien_t {
  int x, y, v, f;
};

struct alien_t alien[10];

void move_alien(struct alien_t* ap)
{
  int x,y;
  x=ap->x+XV[ap->v];
  y=ap->x+YV[ap->v];
  switch (MAP(x,y)) {
  .
  .
  .

void move_aliens(void)
{
  int i;
  for (i=0;i<10;i++) {
    if (alien[i].f) move_alien(&alien[i]);
  }
}

FORTRAN や COBOL では、「サブルーチン」が「エイリアン10匹を動かす」という機能として実装されていたのに対し、構造化プログラムでは「エイリアン1匹を動かす」関数(あるいはプロシージャ、ないしはメソッド)と「10匹のエイリアンを動かす」機能に分離されています。
こういったプログラミングの何が良いかというと、例えば「パックマン」みたいに、敵キャラに異なる性格付けがされている場合、

void move_aliens(void)
{
  int i;
  for (i=0;i<10;i++) {
    switch (alien[i].f) {
    case 1:
      move_red_alien(&alien[i]);
      break;
    case 2:
      move_pink_alien(&alien[i]);
      break;
    case 3:
      move_blue_alien(&alien[i]);
      break;
    case 4:
      move_green_alien(&alien[i]);
      break;
  }
}

のように、「性格」を別のコーディングとして実装できることです。FORTRAN 型や COBOL 型のプログラミングでは、「性格」に関する変数を新たに増やし、move_alien() サブルーチンの中で性格の if を入れて「逃げるか、向かって行くか、ウロつくか」の判定を入れなければなりません。例えばこんな感じ?

void move_alien(void)
{
  int x,y;
  for (i=0;i<10;i++) {
    if (alien[i].f) {
      x=alien[i].x+XV[alien[i].v];
      y=alien[i].y+YV[alien[i].v];
      switch (MAP(x,y)) {
      case WALL: // 移動先のマップが壁だった場合
        switch (alien[i].f) {
        case 1: // 検非違使へ向かって行く方向へ変針する
          .
          .
          .
        case 2: // ランダム方向へ変針する
          .
          .
          .
        case 3: // 検非違使から逃げる方向へ変針する
          .
          .
          .

こんな switch が「他のエイリアンに当たった場合」やら「文岐路に差しかかった場合」のそれぞれに散りばめられるとプログラムは破綻に近づいてゆきます。構造化プログラミングでは、機能単位の分割に関する考え方が逆になります。共通部分をこそルーチンとして外部に放り出し、「異なる部分」を呼び出し元に残しておくのです。

あぁ、真面目に説法してしまった。絶望した!説法好きな自分に絶望した!!
 

ってしまったにゃ

 投稿者:P-kun  投稿日:2009年 4月13日(月)00時14分18秒
  こんな書き方したら、
「こんな下らない処理に除算なぞ使いおって重いじゃろがボケェェェェ!!死んでしまへ!!」
と化石アセンブラーに怒られるのにゃ。これはきっと孔明の罠なのにゃ。きっとそうなのにゃ!!
ギャーーーー!!
 

こういうことしたら・・・

 投稿者:P-kun  投稿日:2009年 4月12日(日)23時47分23秒
  怒られる?
for (int i=0;i<10000;i++){
printf("%d %d %d %d\n", (i % 10000) / 1000, (i % 1000) / 100, (i % 100) / 10, i % 10);
}
いや、結果同じだし・・・
多重ループ嫌いだし・・・
 

再帰不能

 投稿者:猫ノ宮  投稿日:2009年 4月12日(日)23時20分50秒
  そういや会社のC言語研修(初級)のとき、表示のしかたは違うけど多重ループを

int i, depth;

depth = 0;

int loop(int depth)
{
  depth++;
  if (depth <= 4)
  {
    for (i=0;i<10;i++)
    {
      printf("%d\n", i);
      loop(depth);
    }
  }
}

こんなような書き方したら、教官の人が冷たくなりましたにゃ。
あの研修、ポインタとか構造体とかやらなかった(中級以上でやるらしい)ので、いまだに構造体はよくわかんにゃー。
その辺がC-のマイナスな所以ですにゃー。

http://www.kumei.ne.jp/c_lang/

 

以上は、新着順1番目から30番目までの記事です。 1  2  3  4  |  《前のページ |  次のページ》 
/4