- 1 名前:まだ初心者なの [02/06/27 02:02 ID:HvMYma0g]
- 比較的規模の小さい
ゲームやアルゴリズムをUPしたり 語り合ったりするスレッドです。 勉強用ですので、言語の選択についてや ゲームが面白いかどうかの議論は禁止の方向で。 UPする方は使用言語を明記してください。 どうか盛り上がってください。おながいします。おながいします。
- 97 名前:名前は開発中のものです。 mailto:sage [02/07/12 21:29 ID:???]
- ちなみに、配列で状態を保存しておけば一度捜査したところの無駄な再帰は無くなる
- 98 名前:3D太郎 [02/07/12 22:33 ID:0q0E/8gY]
- >>94
各blockにstateflgを記録し、Actived(存在する)ならtrueを返します。 isActivedに変えました^^;colorを調べる順番変更させていただきました。 >>95>>97 blockの中に状態保持フラグがあり、そこで同動作を実現しております。 >>96 再帰の途中では、cnt<4の状態があり、この状態で2度と訪れない場合が 存在します。cnt>4条件で消していると、これらが消されないように思うのですが、 どうでしょうか?
- 99 名前:名前は開発中のものです。 mailto:sage [02/07/12 22:40 ID:???]
- 再帰なんだけど、末尾再帰ではなく、
関数から戻るフェーズで一番下の層からの戻り値(カウント)をセットすれば?
- 100 名前:名前は開発中のものです。 mailto:sage [02/07/12 22:53 ID:???]
- というか、このコードって動いてるの?
斜めにつながるぷよぷよ? 無限再帰してるようにも見える。 get*()関数はもしかして内部状態を変化させていますか?
- 101 名前:3D太郎 [02/07/12 23:11 ID:0q0E/8gY]
- >>100
cnt = checkEraseBlockの下に状態変化関数を入れ忘れておりました。 上記は妄想関数です。アルゴリズムだけでも伝わればと思ったのですが、 本末転倒しております。 いくつか落ちゲーに必要なアルゴリズムがそろったらきちんと コーディングしたいと思っております。
- 102 名前:名前は開発中のものです。 mailto:sage [02/07/12 23:47 ID:???]
- >>98
だから、 > int cnt = checkEraseBlock( x, y, block[ x][ y].getColor()); > if( cnt > 4) EraseBlock( x, y, block[ x][ y].getColor()); をそれぞれ別のループの中で行えということ。 こんな風に。 for(...) { for (...) { block[x][y].setCnt(checkEraceBlock(x, y, ...)); } } for(...) { for (...) { if (block[x][y].getCnt() >= 4) { block[x][y].setErace(); } } } これだと前半のループが効率悪いから、>>97みたいなことをすると良い。
- 103 名前:名前は開発中のものです。 [02/07/13 01:01 ID:.X0DkgxQ]
- ちょうど3D太郎さんと同じような処理を作ってたんで、
自分のものっけてみようかと。 分けわかんない型や関数があると思いますが、 そのへんは想像か、見なかったことにしてもらう方向で。 こんなもんのっけるんじゃねーって人は無視してください。
- 104 名前:大学1年生 [02/07/13 01:02 ID:.X0DkgxQ]
- ちょうど3D太郎さんと同じような処理を作ってたんで、
自分のものっけてみようかと。 分けわかんない型や関数があると思いますが、 そのへんは想像か、見なかったことにしてもらう方向で。 こんなもんのっけるんじゃねーって人は無視してください。
- 105 名前:大学1年生 [02/07/13 01:03 ID:.X0DkgxQ]
- Sint32 CBoard::EraseBall()
{ Sint32 point = 0; Sint32 i, erasenum, eraseline = CGameInfo::GetInstance()->GetEraseLine(); Sint32 idxbox[SELLNUM]; for(i=0; i<SELLNUM; i++) { if(Table[i] != NULL) { Table[i]->SetSearchFlag(False); Table[i]->SetEraseFlag(False); } }
- 106 名前:大学1年生 [02/07/13 01:04 ID:.X0DkgxQ]
- for(i=0; i<SELLNUM; i++)
{ if(!Table[i]) continue; erasenum = EraseSearch(i % RETU, i / RETU, Table[i]->GetElement(), 0, idxbox); if(erasenum >= eraseline) { //#得点処理 point += erasenum * 10; for(Sint32 j=0; j<erasenum; j++) { Table[idxbox[j]]->SetEraseFlag(True); Table[idxbox[j]] = NULL; //#消去処理 } } } return point; }
- 107 名前:大学1年生 [02/07/13 01:05 ID:.X0DkgxQ]
- Sint32 CBoard::EraseSearch(Sint32 x, Sint32 y, const CElement &element, Sint32 num, Sint32 idxbox[])
{ Sint32 idx = y * RETU + x; if(!Table[idx] || Table[idx]->GetSearchFlag() || Table[idx]->GetElement() != element) return num; Table[idx]->SetSearchFlag(True); if(x < RETU - 1) num = EraseSearch(x + 1, y, element, num, idxbox); if(x > 0) num = EraseSearch(x - 1, y, element, num, idxbox); if(y < GYOU - 1) num = EraseSearch(x, y + 1, element, num, idxbox); if(y > 0) num = EraseSearch(x, y - 1, element, num, idxbox); idxbox[num] = idx; return num + 1; } 2重カキコすいませんでした。
- 108 名前:名前は開発中のものです。 mailto:sage [02/07/13 12:20 ID:???]
- 処理の流れやアルゴリズムの簡単な説明くらい
書いてホスィね。作ろうとしているものがイマイチ分からんです。 もしくは、一部だけじゃなくて全部を上げるとか。もちろん動く形でね。
- 109 名前:名前は開発中のものです。 mailto:sage [02/07/13 20:17 ID:???]
- 再帰させないアルゴリズムってどうするの?
- 110 名前:名前は開発中のものです。 mailto:sage [02/07/13 20:40 ID:???]
- >>109
スタックとwhileでどうよ?
- 111 名前:>>109 mailto:sage [02/07/13 22:57 ID:???]
- #include <list>
struct group { int _num, *num, color; group(int c) { num = &_num; color = c; } void link(group *g) { if (g != this) { int n = *num; num = g->num; *num += n; } } } *block_g[6][6]; int block[6][6] = { {1, 1, 1, 4, 4, 0}, {1, 0, 1, 0, 4, 4}, {1, 1, 1, 2, 2, 4}, {0, 3, 3, 0, 2, 2}, {3, 3, 1, 2, 2, 4}, {3, 1, 1, 1, 0, 4} }; void erace() { std::list<group*> glist; for (int i = 0; i < 6; i++) for (int j = 0; j < 6; j++) { if (j > 0 && block_g[i][j-1]->color == block[i][j]) (*(block_g[i][j] = block_g[i][j-1])->num)++; if (i > 0 && block_g[i-1][j]->color == block[i][j]) { if (block_g[i][j]) block_g[i][j]->link(block_g[i-1][j]); else (*(block_g[i][j] = block_g[i-1][j])->num)++; } if (!block_g[i][j]) { (*(block_g[i][j] = new group(block[i][j]))->num)++; glist.push_back(block_g[i][j]); } } for (std::list<group*>::iterator i = glist.begin(); i != glist.end(); ++i) delete *i; } int main() { memset(block_g, 0, sizeof(block_g)); erace(); for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) printf("%02d,", *block_g[i][j]->num); printf("\n"); } }
- 112 名前:111 mailto:sage [02/07/13 23:00 ID:???]
- おっと、#include <stdio.h> がないとだめかも。
gccで動作確認しますた。
- 113 名前:大学1年生 [02/07/14 01:47 ID:6shM2PBs]
- >>108 すいませんでした。
Bool == bool, True == true, False == false, Sint32 == int Table[] == 消える対象(CElementのポインタ)がはいってるテーブル RETU == 列, GYOU == 行, SELLNUM = Table[]のサイズ == RETU * GYOU ぷよぷよみたいな感じで。 処理の流れ EraseBall() idxbox[] == 削除予定のTable[]のIndexを保存するための配列 SetSearchFlagとSetEraseFlagで検索したか、削除対象かのフラグをFalseで初期化 Table[]をすべてEraseSearchで何個つながってるか数を検索 つながってた個数が一定数(eraseline)以上なら削除決定 idxbox[]を使い削除対象のインデックスを習得 SetEraseFlagを使いTrueに設定 Table[] = NULLでテーブルから削除 EraseSearch(列の座標,行の座標,ぷよの色みたいな感じ,何個つながってるか,検索したIndexを入れる配列) テーブルに存在するか、検索済みか、同じ属性かの判定 SetSearchFlag(True)で検索済みに設定 上下左右で再帰して検索 idxbox[]に検索したアイテムのTableのIndexを設定 自分がつながってたことを表すようにnumに1つ足してreturn つまり3D太郎さんと同じアルゴリズムです。 動く形で全部(一部でも)アップするのはいっぱいファイルがいるので無理です。 かなりわかりにくい説明だと思いますけど、これが限界なんで。 分からなかったらすいません。
- 114 名前:名前は開発中のものです。 mailto:sage [02/07/14 02:08 ID:???]
- ぷよぷよとかテトリスは(タイトルを変えても)
実行可能な状態でUPすると著作権侵害に触れるんだっけ? 確か、ブロック崩しはOKだったよね。
- 115 名前:名前は開発中のものです。 mailto:sage [02/07/14 02:23 ID:???]
- >>114
ほんと?著作権なの? 意匠権とか、特許じゃなくて??
- 116 名前:名前は開発中のものです。 [02/07/14 09:55 ID:fsyX9X4c]
- >>114
でも著作権って、アイデアは保護されないはず。 ソースコードには著作権があるので、 1から作れば問題ないとかあるとか…。 結局のところどうなんだ? >>114の話もよく聞くし・・・
- 117 名前:114 mailto:sage [02/07/14 10:36 ID:???]
- >>115-116
「アルゴリズム」自体には著作権は 認められていないと思うけど、ゲームの ルール自体には認められているから… 普通に考えて、商用のゲームのコピーを勝手にUPするのはNGかな、と。 2chでは、「ぷよぷよ作ろう」みたいなスレッドが普通に立って 普通にUPされているからちょっと気になった。 でも、このスレには関係の無いことだったかな。汚してスマソ。
- 118 名前:名前はデバッグ中のものです。 mailto:sage [02/07/14 11:06 ID:???]
- >>116
なるほど。 |2chでは、「ぷよぷよ作ろう」みたいなスレッドが普通に立って |普通にUPされているからちょっと気になった。 同意。なんか、違和感を覚えた。 誰もスレで指摘していなかったような感じで。
- 119 名前:名前は開発中のものです。 mailto:sage [02/07/14 11:51 ID:???]
- ルールに著作権が認められてるって本当?
判例とかあるのかな?
- 120 名前:114 mailto:sage [02/07/14 12:11 ID:???]
- すいません、これで最後にします。
>>119 ゲーム関係の裁判は様々な主張が入り乱れていて 絶対的な判例ってのは、まだ無いと思います。 ルールって表現はマズかった。 だが、ぷよぷよのルール(ゲーム)はプログラムと 何らかの視覚表現があって成立するものだから プログラムに視覚表現を含めてUPするのは危険だと思う。
- 121 名前:名前は開発中のものです。 mailto:sage [02/07/14 12:45 ID:???]
- というか、著作権云々じゃなくて、製作者としての姿勢的にとか道義的にまずいだろ。
- 122 名前:名前は開発中のものです。 mailto:まだ初心者なのsage [02/07/18 01:13 ID:???]
- ちょっと旅行に行ってました。
山に登ろうとした日に台風が来て、もうアホかと。 では、気持ちを新たにUPさせていただきます。 以前話題に出た、逆ポーランド記法への変換アルゴリズムです。 >>61のプログラムが少し進化しました。 ()に対応しました。 また、 (-(47 + 12) / 8) のように括弧の前のマイナス記号にも対応してます。 それ以外は>>61と同じです。 + - * / の四則演算ができます。 C言語です。 ソース www.geocities.co.jp/SiliconValley-Cupertino/8770/newMtoB.txt 実行ファイル www.geocities.co.jp/SiliconValley-Cupertino/8770/newMtoB.zip ソースは見るに値しない状態(きたない)ですが一応あげさせていただきます。 <<続きます>>
- 123 名前:名前は開発中のものです。 mailto:まだ初心者なの [02/07/18 01:15 ID:???]
- <<続きです>>
アルゴリズムは () 内の式を再帰で渡していく というものです。括弧の前のマイナスは -(8 + 7) → -1 * (8 + 7) という風に変換して渡してます。 自力で無理やり作ったものなので、無駄が多いと思います。 誰か、より完璧なアルゴリズムをご存知でしたら教えていただきたいです。 どちらかと言えば、マ板向きの話題なのかもしれませんが… また、>>122のプログラムの動作について指摘がありましたらお願いします。 ぷよぷよの話題に関しては、僕の効率の悪い、初心者気合アルゴリズムで 場を荒らしてしまうような気がするので、ROMさせていただきます。口惜しや…
- 124 名前:名前は開発中のものです。 mailto:まだ初心者なのsage [02/07/18 01:27 ID:???]
- >どちらかと言えば、マ板向きの話題なのかもしれませんが…
ム板に訂正… しかも>>78で自爆レスしてる… >>76に訂正です。
- 125 名前:名前は開発中のものです。 [02/07/18 02:25 ID:VUqV/Vc.]
- >>117 ほか
同人誌と同じようなものだし、別に責められるほどのものではないんでは? ただ、ぷよぷよアルゴリズムの権利者(って今どこが持ってるんだ?)から クレームがあるかもしれないことを認識しておく必要があるとは思うが。
- 126 名前:名前は開発中のものです。 mailto:sage [02/07/18 09:24 ID:???]
- 今はセガがもってるんだっけ?
- 127 名前:名前は開発中のものです。 mailto:sage [02/07/18 09:39 ID:???]
- アルゴリズムに認められるのは特許権。
しかも、プログラムをただ公開しただけじゃ、特許権侵害にはならないんじゃなかったっけ?
- 128 名前:名前は開発中のものです。 mailto:まだ初心者なの [02/07/18 14:04 ID:???]
- >>122のプログラムに大きなバグがありました。
()に付いているマイナス記号の判定、スペースやタブで 区切って式を入力した際の不具合を修正しました。 修正した実行ファイル www.geocities.co.jp/SiliconValley-Cupertino/8770/newMtoB2.zip 例えば (9+8*7)/6-(-((5-4)*(3+2))) という式を与えた場合の出力は… (修正前)9 8 7 * + 6 /-1 -1 5 4 - 3 2 + * * * - (修正後)9 8 7 * + 6 / -1 5 4 - 3 2 + * * - と、なっています。 まだバグがありそうですし、汚いのでソースのUPは今回は見送ります…
- 129 名前:>>128 mailto:sage [02/07/18 16:25 ID:???]
- いろいろと入力してみたけどコンピューターで
計算できる形になってるみたいだしいいんじゃない? ソースについてのコメントは控える。(w
- 130 名前:名前は開発中のものです。 [02/07/18 21:01 ID:eG1jD3wM]
- merosuke.tripod.co.jp/project1.zip
- 131 名前:名前は開発中のものです。 mailto:まだ初心者なの [02/07/18 21:29 ID:???]
- >>129
コメントありがとうございます。少しだけ自信がつきました… 今のところはバグが見当たらないので 逆ポーランド記法の式を計算する関数も作ってみました。 入力された式を逆ポーランド記法に変換して表示し、計算結果も表示されます。 C言語です。 ソース www.geocities.co.jp/SiliconValley-Cupertino/8770/calculation.txt 実行ファイル www.geocities.co.jp/SiliconValley-Cupertino/8770/calculation.zip 動作などに関する意見や質問があったらよろしくお願いします。
- 132 名前:名前は開発中のものです。 mailto:まだ初心者なのsage [02/07/18 21:32 ID:???]
- >>130
落としてみたのですが、エラーが出て実行できませんでした。 あと、何かを貼り付ける時は簡単なコメント・説明を添えるように してください…おねがいします。
- 133 名前:名前は開発中のものです。 [02/07/18 23:33 ID:KrSipdXM]
- ちょっとソースが汚いかも。
GetPriorityOperator関数でcase文使っているけど、この使い方だったら、 if文使った方がまとまると思うよ。あと、再起してる関数じゃないなら、 部分部分にreturn入れないで、retとかいう変数つくって、 そこに戻り値入れて最後に返してやるようにする。 int GetPriorityOperator(char op) { int ret = 0; if(op == '*') ret = 10; else if(op == '/') ret = 10; else if(op == '+') ret = 8; else if(op == '-') ret = 8; else if(op == '\0') ret = 0; else if(op == ')') {printf(")"); ret = 0;} else printf("GetPriorityOperator(char op); 不正な引数\n"); return ret; }
- 134 名前:名前は開発中のものです。 mailto:sage [02/07/18 23:37 ID:???]
- 生成されるコードを考えると、そこのソースは元のままでいい。
出来れば、defaultは除去してその前の段階でキャラクタ検査をした方が良い。
- 135 名前:名前は開発中のものです。 mailto:まだ初心者なのsage [02/07/19 08:47 ID:???]
- >>133-134
レスありがとうございます。 まずは、見やすいプログラムを書くように心がけます。 僕は、まだ生成されるコードの効率とかを 考えるレベルには至っていないのかもしれません… 効率について検索してみたのですが、 >switchは if - elseif …のチェイン(cmp xx jz xx ...)に展開されることもしばしばで、 >こんなものになってしまったらジャンプテーブルに比べて圧倒的に速度が低がするのは想像に硬くありません。 >例えば、switch文の最後に > default: > __assume(0); // (VCの拡張機能、ここに来ることは有り得ないと言う事) >等としてやるとVCに於いてはほぼ確実にジャンプテーブルに展開されるようになります(なるそうです…)。 というのがありました。
- 136 名前:名前は開発中のものです。 mailto:sage [02/07/19 09:45 ID:???]
- というか、生成されるコードならテーブルに展開するのが一番速いけどな
- 137 名前:名前は開発中のものです。 mailto:sage [02/07/20 14:19 ID:???]
- C言語。オセロ。某所より。見て氏ね。
#include <stdio.h> int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i ;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v +=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for (p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0, puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}
- 138 名前:名前は開発中のものです。 mailto:sage [02/07/20 20:43 ID:???]
- >>137
すごいですね。 俺が授業で書いたオセロは200行ちょい。 このプログラムを改行とかしたら40行弱。 ・・・あと4年間で何とかしないとな。
- 139 名前:名前は開発中のものです。 mailto:sage [02/07/20 23:29 ID:???]
- つーか、このオセロはかなり上級者の書いた物だろ
7行スレでも有名な人が書いた物。
- 140 名前:名前は開発中のものです。 [02/07/21 00:04 ID:VfOHqT.A]
- 言語の仕様を熟知していれば
ある程度は可能だと思うが。 別にレベルがどうこうじゃないような。 >>137みたいなのはオジさん同士で見せ合うのは たのしいんだけど、若い人は興味無いんじゃないか? 基本的に「実用テクニック」にはなり得ないから。
- 141 名前:名前は開発中のものです。 mailto:sage [02/07/21 00:12 ID:???]
- >>140
勝手に言ってくれるなー 俺もいいかげんおじさんなのか。
- 142 名前:名前は開発中のものです。 mailto:sage [02/07/21 00:26 ID:???]
- sou desu YO!
- 143 名前:名前は開発中のものです。 mailto:sage [02/07/21 00:34 ID:???]
- あのオセロは割り切り方が凄いんだよ。
実装範囲を選んで、機能を限定してそれ専用にチューニングしてる。 こういうことは結構重要で、出来ない奴は結局ここの技術にこだわりすぎて 全体的に効率悪い物しか作れない。 小手先のテクニックも使ってるけど、それだけだと思ったら大間違いだよ。
- 144 名前:名前は開発中のものです。 mailto:sage [02/07/21 00:37 ID:???]
- >>142
10代でおじさんと言われるとは思わなかったYO!
- 145 名前:140 mailto:sage [02/07/21 00:42 ID:???]
- >141=138か?
>137のは実行してないからよく分からんが オセロを満たすのに必要最低限のことしかやってないだろ。多分。 そんなのに興味を持つくらいなら思考ルーチンのひとつやふたつ を作ってみた方がいいですよ。何年かやってれば自然に出来るようになるし。 駆け出しのうちは手に届くものを優先。 >>143 まあ、これが出来なければあれが出来ない、みたいな話は止めましょうや。
- 146 名前:名前は開発中のものです。 mailto:sage [02/07/21 00:50 ID:???]
- >>145 >141=138か?
違う >のは実行してないからよく分からんが 実行しろよタコ 何もしないで人のプログラムを語るな。 PC対戦付きだボケ
- 147 名前:名前は開発中のものです。 mailto:sage [02/07/21 00:58 ID:???]
- 140は、「あんなの凄くねぇ。俺のほうが凄いYO!」って自慢したいだけなんだから、そっとしとこうや。
- 148 名前:140 mailto:sage [02/07/21 09:20 ID:???]
- >PC対戦付きだボケ
その位は見ただけで分かるよ。 でも、どの程度のチェック漏れがあるのかは分からない。 相変わらず実行はしていないから分からないが おそらく比較的、遭遇頻度の低いバグは無視しているのだろう。 七行スレって言うくらいだからそんなことを言うのは野暮なんだろうが。 トイプログラムとして見れば面白いし、レベルも高いと思う。 煽る人が居るし、これで最後にする。
- 149 名前:名前は開発中のものです。 mailto:sage [02/07/21 09:58 ID:???]
- まぁ、なんつーか、思考ルーチンなんて何年やっても自然に出来るもんじゃないよな
簡単な(要するにテキトーな)思考ルーチンや単なる総当たりなら出来るかも知れないが、 有名なαβ法なんかは自然に思いつくたぐいの物でもないしな。 理論的な思考ルーチンなんかはひとつやふたつなんて言うほど簡単に作れるもんでもない。
- 150 名前:名前は開発中のものです。 mailto:sage [02/07/21 12:28 ID:???]
- 口を動かすくらいなら手を…ってことじゃないか?
若い人って”出来ないからやらない”じゃん。それはイクナイ。
- 151 名前:138 mailto:age [02/07/26 03:09 ID:???]
- >>145
オセロの思考は趣味のほうで作りましたね。 自分よりは強いけど、どの程度かは分かりませんです。 まだ137のプログラムが読める程度なので4年後が心配だったけど、 上級者と知って少し安心です。 でもプロのレベルがいまいち分からないからやっぱりかなり不安・・・。 学生に>>137を見てほしいからage
- 152 名前:名前は開発中のものです。 mailto:sage [02/07/26 08:43 ID:???]
- >>140
むしろ若い人ほど7行でどんなことができるかとか燃えそうな気がするなぁ 64kメガデモみたいなもんですかな
- 153 名前:おもしろいものが mailto:とても [02/08/12 16:52 ID:???]
- 見たいのでage。
- 154 名前:名前は開発中のものです。 mailto:sage [02/08/12 17:27 ID:???]
- 見たい見たいと騒ぐだけで何も作らないクレクレ厨が発生したので sage。
- 155 名前:名前は開発中のものです。 mailto:sage [02/09/02 20:54 ID:???]
- >>149
普通のオセロは通常読みと必勝読みと完全読みの3ルーチン持ってると思う
- 156 名前:名前は開発中のものです。 mailto:質問age [02/10/13 14:20 ID:???]
- >>131のアルゴリズムって
あれで正しいのですか? 実行してみたんですけどちゃんと動いるみたいでした。 今までノベルゲームくらいしか作ったことが無く こういうプログラムやったこと無いので興味を持ちました。
- 157 名前:名前は開発中のものです。 mailto:sage [02/10/13 15:59 ID:???]
- RPG風ダンジョン。DOS/Win用。2468で移動、数字なのが敵、
たおしてくと階段 '/' がでてきて、接触で次フロアへ。終わりはq。 int m[9801],X,Y,a,b,i,j,k,l=99,U[99],V[99],W[99],g,h;E(x,y){for(k=1;k<99;++k)if (U[k]==x&&V[k]==y&&W[k])return k;return 0;}D(){printf("\n%dHP M=%d %dF\n",l,g,h );for(j=-3,i=0;i<49;++i){a=X+j;b=Y+i/7-3;putchar(i==24?64:E(a,b)?W[E(a,b)]+48:G (a,b));j=i%7<6?j+1:(putchar(10),-3);}}G(x,y){if(E(x,y))return (l-=W[E(x,y)])<=0 ?exit(puts("YOU LOST\n")):0,--W[E(x,y)]?0:++g,(m[R(49)*2+R(49)*198+g%2*198]=47) ,35;return x<0||x>98||y<0||y>98?35:m[x+y*99];}R(n){return rand()%n;}N(){++h;g=0 ;for(i=0;i<99;++i){U[i]=R(99)*2,V[i]=R(99)*2,W[i]=R(8)+1,m[R(49)*2+R(49)*198+i% 2*198]=35;for(j=0;j<99;++j)m[i+j*99]=(i%2+j%2)>1?R(4)<3?35:46:46;}}M(x,y){i=x+X ;j=y+Y;G(i,j)==47?N():G(i,j)==35?0:(X=i,Y=j);}main(){N();for(;;){D();k=getch(); k==56?M(0,-1):k==54?M(1,0):k==52?M(-1,0):k==50?M(0,1):k==113?exit(0):0;}}
- 158 名前:名前は開発中のものです。 mailto:sage [02/10/13 23:40 ID:???]
- >>157
マップ広すぎ。 あと、視野(見える範囲)はもっと広くていいと思うぞ。
- 159 名前:( ○ ´ ー ` ○ ) [02/10/14 13:41 ID:oQUDul00]
- ちょっと太っちゃった…
- 160 名前:名前は開発中のものです。 mailto:sage [02/10/14 14:11 ID:???]
- ( ○ ´ ー ` ○ )
- 161 名前:名前は開発中のものです。 [02/12/20 00:56 ID:TnNLuwnN]
- ざっと読んでみたんですが少し勉強になりました。
期待ageさせて下さい!
- 162 名前:名前は開発中のものです。 mailto:sage [02/12/20 01:27 ID:hsTe63tg]
- <
< 終 了ーーーーーーーーーーーーーーーー!!!! < ∨∨∨∨∨∨∨∨∨∨∨\ /∨∨∨∨∨∨∨∨∨∨ /:|. | | /:| / .:::| ∨ / :::| | ...:::::| / ::::| i  ̄ ̄⌒゙゙^――/ ::::::::| /_,,___ . _,,,,__,_ :::::::::::\ / ゙^\ヽ.. , /゙ ¨\,.-z ::::::::::\ 「 ● | 》 l| ● ゙》 ミ.. .::::::\ /i,. .,ノ .l| 《 ..|´_ilト ::::::::::\ / \___,,,,,_/ .'″ ^=u,,,,_ v/.. :::::::::::::l! |  ̄ ,,、 i し./::::::::.} | / ,,____ _,/ ̄ \ \ ノ ( ::::::::::| | |.. | /└└└└\../\ \ '~ヽ ::::::::::::::} | .∨.|llllllllllllllllllllllllllllllllllllllll| ::::::::::{ | |.|llllllllllll;/⌒/⌒ 〕 :::::::::::} | |.|lllllllll; ./ . . | ::::::::::[ .| |.|llllll|′ / . | .| :::::::::::| .| |.|llll| | .∧〔 / :::::::::::::/ / }.∧lll | ../ / / :::::::::::::::::\ / /| \┌┌┌┌┌/./ /::: :::::::::::::::::\ ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /::::::::::: ::::::::::\ ヽー─¬ー〜ー――― :::::::::::::
- 163 名前:名前は開発中のものです。 mailto:age [03/09/15 23:31 ID:cjbTqAlp]
- age
- 164 名前:名前は開発中のものです。 [03/09/16 17:36 ID:rZAhYual]
- 探知キボーヌ
ネタ
- 165 名前:名前は開発中のものです。 mailto:sage [03/09/16 17:45 ID:EQhFXA4K]
- 空AGE やめーい!
- 166 名前:名前は開発中のものです。 mailto:sage [03/09/17 00:42 ID:/Dz3qKwA]
- このスレで聞くもんでもないと思うんだが、
sageててもIDが出る人と出ない人がいるのは何故?
- 167 名前:名前は開発中のものです。 [03/10/25 16:28 ID:w+myaAmJ]
- >>166
頭がいい人と悪い人の違い
- 168 名前:名前は開発中のものです。 [03/11/14 15:17 ID:4meSYN3s]
- >>131のソース
if(GetPriorityOperator(stack[stack_pos]) >= GetPriorityOperator(str[i])){ newstr.str[newstr_pos++] = stack[stack_pos--]; newstr.str[newstr_pos++] = ' '; }else if(GetPriorityOperator(stack[stack_pos]) < GetPriorityOperator(str[i])){ stack[++stack_pos] = str[i]; break; } プライオリティが等しいときも演算子スタックにつまなきゃだめじゃない? 上記だと計算結果はあうけど逆ポーランド法表記的にまずくない?
- 169 名前:名前は開発中のものです。 mailto:sage [04/08/01 21:49 ID:V3JnTtE5]
- >>157
うおお、初心者の俺からしてみればすごい・・・。 少し前に長方形領域の移動プログラム(ただ単に移動するだけ)つくってみたけど、 それなんか200行以上もあるよ・・・(>>157は見やすいように整えて60行ほど)。 まだまだだなぁ・・・。ってまだCの教科書を1冊も終わらせてないんだけどね。 ポインタの恐ろしさもまだぜんぜんわかんないし。
- 170 名前:169 mailto:sage [04/08/01 21:51 ID:V3JnTtE5]
- 解読しようと思っても今の俺の知識じゃ無理だな
- 171 名前:名前は開発中のものです。 [04/08/01 22:00 ID:V3JnTtE5]
- うわっ。過疎スレということに今気づいた。
age
- 172 名前:名前は開発中のものです。 [04/08/03 14:15 ID:pwgXpzV7]
- >>157のソースを
わかりやすく整形してみました。 do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=295 基本的にオリジナルアルゴリズムに忠実な形での整形ですが 以下の2点で手を加えています。 ・ワーニングを完全に排除するために メインループからのエスケープにgoto文を追加。 ・画面クリアのためのsystem("CLS")を追加。
- 173 名前:名前は開発中のものです。 [04/08/04 18:06 ID:2FqsG8xs]
- >>172
おつ!見やすい!役立たせていただきます!
- 174 名前:172 mailto:sage [04/08/04 19:12 ID:k/+0Z3FN]
- お。見てくれた人がいてヨカタ
ささ、愉快な短いプログラムきぼんぬ。 おいらが解読します。 >>137のオセロは遊び方がわからないので断念しました。
- 175 名前:名前は開発中のものです。 mailto:sage [04/08/04 19:40 ID:2FqsG8xs]
- 俺そんな人に見せるほどのものは作ってないなぁ。ごめん。
って別に俺に言ってるのかは知らんけど。
- 176 名前:172 mailto:sage [04/08/04 20:05 ID:k/+0Z3FN]
- いやぁもう誰でもおk
- 177 名前:名前は開発中のものです。 mailto:sage [04/08/05 01:04 ID:Ww4148ra]
- >>174
>>137のオセロソース、斜め読みしかしてないのでアレだけど 横1桁縦1桁の数字(46とか)で打つ場所を入れるんジャネーノ?
- 178 名前:172 mailto:sage [04/08/05 01:21 ID:yhEwSVU3]
- >>177
4[enter] 6[enter] で一手やね。 一応解析してみますかな。 Now Analyzing...
- 179 名前:172 [04/08/05 21:43 ID:muG+oZLA]
- >>137のオセロのソースを整形しました。
do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=299 解析は非常に難航してマヂで丸二日かかりました。 それだけにとても勉強になりました。 簡単なポインタの利用例や巧妙な配列の使い方など 参考になると思うので C言語勉強中の人は一読オススメしておきます。 ちょっと難しいソースだと思うのでコメント大量につけました。 うざい人は消して読んでね。 評価・探索アルゴリズムは読んでみた人だけのひみつ。
- 180 名前:172 mailto:sage [04/08/05 21:53 ID:muG+oZLA]
- ささ、次の7行プログラムをどなたかもってきてください。
当方CかJavaかJavaScriptしか読めまてん。 よろちくおながいします。
- 181 名前:名前は開発中のものです。 mailto:sage [04/08/06 14:59 ID:1oB+oDD2]
- 誰も貼り付けてくれないので
自分で探してたらこんなのみつけました。 7行スレその1 pc.2ch.net/test/read.cgi/tech/984182993/ 7行スレその2 pc.2ch.net/test/read.cgi/tech/1018840143/ 盛り上がっているのは俺だけなのか。。 過疎ってさみしい。
- 182 名前:名前は開発中のものです。 mailto:sage [2005/06/12(日) 11:06:16 ID:WhyZAEvM]
- ほ
- 183 名前:名前は開発中のものです。 mailto:sage [2005/11/18(金) 21:28:32 ID:aihTlFd4]
- キャベツage
- 184 名前:名前は開発中のものです。 mailto:age [2006/01/19(木) 22:48:13 ID:ggSypXg/]
- hosu
- 185 名前:名前は開発中のものです。 [2006/09/22(金) 08:30:34 ID:seYHxo/2]
- ハ,,ハ
( ゚∀゚) おいらをどこかのスレに送って! 〜(ouub お別れの時にはお土産を持たせてね! 現在の所持品:たばこ他48品圧縮.zip・どようび・ドエット 糞スレ・rigel・ギコペ・Jane・ニンバス2000
- 186 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2007/11/24(土) 20:01:19 ID:w/0MHia8]
- 以下,このスレは私がもらいます.
- 187 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2007/12/01(土) 01:35:19 ID:3UvlWnEW]
- 作成開始
- 188 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2007/12/09(日) 23:24:48 ID:c4JBq/jx]
- 保守
- 189 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2007/12/18(火) 22:40:24 ID:8S4bPrMv]
- 保守
- 190 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2007/12/26(水) 19:57:32 ID:LLHH0wdN]
- 保守するよ
- 191 名前:名前は開発中のものです。 mailto:sage [2007/12/30(日) 15:21:17 ID:C1d66INg]
- ミ,,゚Д゚彡 < スレ落ちそうやで
- 192 名前:名前は開発中のものです。 [2007/12/30(日) 15:53:16 ID:zzg7G+NL]
- さらしあげ
- 193 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2008/01/04(金) 23:34:15 ID:0nXTXUOb]
- 新年あけましておめでとうご保守
- 194 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2008/01/11(金) 22:44:14 ID:dkwNUUFL]
- 保守,それはロマン
- 195 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2008/01/19(土) 22:27:33 ID:9y0chWmO]
- 保守から始まる恋
- 196 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2008/01/30(水) 00:18:13 ID:ZFo8EP1h]
- 保守の波動に目覚めたリュウ
- 197 名前:アナルに宣戦布告 ◆3vv40OycRw mailto:sage [2008/02/18(月) 05:45:17 ID:CBB5bNWD]
- もう保守以外愛せない
|

|