C言語でトランプゲー ..
348:デフォルトの名無しさん
07/09/25 17:04:22
324 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/23(日) 10:11:28
>>323
公開したもの勝ちだ
349:デフォルトの名無しさん
07/09/25 17:58:13
喪前らゲ制作板逝けw
350:デフォルトの名無しさん
07/09/25 18:05:51
ゲ制でCUI大富豪なんて誰も参加しねぇよw
あそこでやるなら普通GUI
351:デフォルトの名無しさん
07/09/25 23:58:11
>>103は今頃何してるだろう
352:デフォルトの名無しさん
07/09/26 02:00:40
他人のことを気にしていたって何にもならないさ。
むしろ調べようもなく知る術すらないのに、気にしてばかりいると
すぐに禿げて寿命も縮んで、いつの間にかコロッと死んでしまうかもしれないぞ。
人間、くよくよしない、それが長生きの秘訣だって100歳になった双子が言ってたじょのいこ?
353:デフォルトの名無しさん
07/09/26 02:06:14
日本語でおk
354:デフォルトの名無しさん
07/09/26 02:17:37
最近、日本語がまともに読めない、理解できないのはゆとり世代が
社会人になったせいか。時間の流れは速いなw
355:デフォルトの名無しさん
07/09/26 02:18:49
日本語でおkとか言う奴に限ってまともに日本語を理解できない、使えないのが特徴てき。
自分が知る日本語の範囲内で理解しようとしても、レベルが低いから相手にならない。
こんなプロジェクトに参加すること自体、厚かましい。早々に立ち去れい >>353
356:デフォルトの名無しさん
07/09/26 02:22:34
>>353
お前には朝鮮語で話をした方が良かったか?悪い、俺日本人だし
朝鮮語は勉強したことないからさっぱり分からん。
357:デフォルトの名無しさん
07/09/26 02:25:35
ネタをネタと読みきれない奴が多いな。やっぱパソコンばっかいじってると頭が論理的な思考になって
他人が知って欲しい「意味」を読み取れないのかな
358:デフォルトの名無しさん
07/09/26 02:30:35
URLリンク(www.chunichi.co.jp)
ゆとり世代の日本語おk君、君は記事をしっかり読みましょう。まずはそこから。
まぁ、お前の日本語力じゃ記事の意味すら理解できないだろうし、長生きの秘訣すら
理解できないだろうね。ほら、お前今何歳だ?鏡を見ろ、何歳に見える?
20代なのに、禿げたりデヴってたり、しわやしみが増えて
30代を過ぎたオッサンになってねーか?w
359:デフォルトの名無しさん
07/09/26 02:34:59
ちなみに、〜じょのいこ ってのは、「簡単じゃないか」を
「こんとんじょのいこ」って言うと、えなりかずき君が言っている様に
聞こえるというネタだから。それを指定したのなら、ネタに反応したのはどっちやら?w
360:デフォルトの名無しさん
07/09/26 02:36:55
それくらい知ってるんだからね・・・!勘違いしないでよね!!
361:デフォルトの名無しさん
07/09/26 02:43:41
チョンのスレに迷い込んでしまった
362:デフォルトの名無しさん
07/09/26 02:45:31
>>360
チュンデレでちゅか?
>>361
それはちょんでもないことだ。
363:デフォルトの名無しさん
07/09/26 02:46:59
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
364:デフォルトの名無しさん
07/09/26 02:47:40
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつが最高にアポー
365:デフォルトの名無しさん
07/09/26 02:50:25
366:デフォルトの名無しさん
07/09/26 02:52:35
っつか、君たち暇なら何かトランプゲームを作れYO!
367:デフォルトの名無しさん
07/09/26 06:39:40
君たち、急に静かになったね。そもそも「トランプ」って英語じゃないって知っているよね?
トランプとは「切り札」を意味する言葉で、英語では「プレイングカード」といった呼び名。
だからcardsと言うのさ、俺は、ふっ。
368:デフォルトの名無しさん
07/09/26 15:31:20
>>367
ここは日本語で大丈夫なスレです。
英語に堪能なあなたにはきっと辛いこともあるでしょう。
でも大丈夫。この壷をあなたの家のトイレに飾r
369:デフォルトの名無しさん
07/09/26 18:47:54
初心者が独学でCやって大富豪とか時間かかりそう
370:デフォルトの名無しさん
07/09/26 19:09:02
俺も作ろうかと思ってやってみたけどここにうpされてるのとは全く違うし俺のやり方でできるの?って感じ
371:デフォルトの名無しさん
07/09/26 21:01:27
汚いし長くてもいいならできるんじゃない?まさに今の俺
372:デフォルトの名無しさん
07/09/26 21:37:27
汚くて長い…正にウンコcodeってか。
373:333
07/09/26 22:33:00
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ウンコcodeがなんとか形になりましたので上げてみた。
複数枚処理を書き直して、入力方式は>>328さんのを真似てみますた。
コードが汚い・分かり辛い(特にAI周り)はとりあえず勘弁してくださいw
・ローカルルールや上がり制限は無し
・ジョーカーあり(ワイルドカード・最強カード)
・プレイ人数はデフォルトで3人。コード冒頭の定数を書き換えて変更できるが、54の約数以外では多分おかしくなる。
・AIは「出せるカードのうち最弱」なのを出すようにしてる。AI周りのコードは未整理なんでw
374:デフォルトの名無しさん
07/09/26 22:52:07
安心しろ。俺なんてカードを一枚ずつ作っていったバカだ
375:デフォルトの名無しさん
07/09/26 22:53:39
>>373
エラー(デバッガ例外)がでるのは仕様?
当方C++Builder6
int turn(int *cards , int *hasnum , int *fieldcard , int fieldnum , int pnum){
〜
num = userturn(cards , hasnum[i] , fieldcard , fieldnum , nextindex); ←ココ
376:333
07/09/26 23:11:47
間違えてデバッグ用にAIの手札も表示したままだった……orz
一旦削除しましたので、修正版↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>375
まじすか
うちは5.5だけど出ないorz
もっと具体的なエラーの文面とか出ますか?
377:デフォルトの名無しさん
07/09/26 23:13:48
bcc55は異常なし
378:333
07/09/26 23:19:25
あれ、うちの5.5ってbuilderじゃないのか
compiler
379:デフォルトの名無しさん
07/09/26 23:22:58
>>376
//戻り値:PASS or 出した枚数
int num , nextindex[ONCE_CARD_MAX];
int i;
if (ptype[pnum] == MAN){
disp(cards , hasnum , fieldcard , fieldnum , pnum);
num = userturn(cards , hasnum[i] , fieldcard , fieldnum , nextindex);
iの値不定じゃない?
380:デフォルトの名無しさん
07/09/26 23:23:48
Borland C++ Compiler 5.5だけど動いた。そして俺のプログラムが改めてうんこなんだと思った。
381:333
07/09/26 23:34:18
>>379
それだ! 変数名間違えたorz
はい、ということで修正しますたorz
URLリンク(kansai2channeler.hp.infoseek.co.jp)
しかしよくこんなミスしてバグ出ずに動いてたな。
削除してばっかでろださんに悪い……
てかさっきからそこ眺めてたのに気づかない俺ってorz
382:333
07/09/26 23:38:29
やべ、まだデバッグ用のが残ってたorz
修正版は上げませんけど、247行目、userturn関数の最後から2行目のprintfは消して構いません。
ミス多すぎですねorz
少し吊ってきまつ
383:デフォルトの名無しさん
07/09/26 23:41:08
みんなプログラミング暦どのくらい?学生?社会人?
384:333
07/09/26 23:43:55
今自分でやってたら手札に2が5枚出てきました
どうみてもおかしいです
本当にありg(ry
385:デフォルトの名無しさん
07/09/27 00:24:32
>>384
がんがれw
386:デフォルトの名無しさん
07/09/27 00:53:12
ここでプログラミング暦一週間の俺が登場。トランプゲームだと思って甘く見てました。
>>381のプログラム見てもサパーリ
387:333
07/09/27 02:06:29
>>386
俺のコードはかなり汚いからw
>>328さんのとかは一つ一つの関数がすっきりしてて、
俺のなんかよりよっぽど分かりやすいと思うよ
>>383
初めてCに触れたのは3年くらい前
だけどちゃんとしたプログラミングは今回が初
学生でつ
388:デフォルトの名無しさん
07/09/27 04:22:01
オレは>>328のコードより>>381のコードのほうが好きだけどな。
コンパイルしていないから実装のレベルは無視。
でもまぁ、なんていうか、もうちょっと空白や改行を大事にしてくれよ。
389:デフォルトの名無しさん
07/09/27 23:11:15
頑張って7行で書くんだ。
390:デフォルトの名無しさん
07/09/28 00:28:12
○行って言うけど、それってかなり曖昧じゃね?
1行何文字って定義の元で行数を言わないと
改行するまで1行ってことにすれば、すべてのコードが
扱うコンピュータやエディタが表示可能な限り、1行で済むぜ?
391:デフォルトの名無しさん
07/09/28 00:30:13
この板で「7行」っつーと、7行×79バイトのことだ。
392:デフォルトの名無しさん
07/09/28 00:35:47
んで、1行の文字数や情報量が決められているってなら
今度は別にそれに応じて行数は無視してもなら問題はない。
要するに○行という考え方そのものがナンセンスだということさ、ふっ。
俺、今世紀最大の偉人じゃね?ぜってー俺って歴史に名が残るぜ?
お前ら名の残らないパンピーは俺にひれ伏すが良い
393:デフォルトの名無しさん
07/09/28 00:36:53
ナンセンスなハイセンス
394:デフォルトの名無しさん
07/09/28 01:05:17
っつーわけで、○行なんてわけのわからん規定はやめて
○バイト、半角文字の数を基準にした方が良いじょのいこ?
395:デフォルトの名無しさん
07/09/28 01:15:32
7行プログラミングってジャンルがあるんだ
単なるネタだしょ
396:デフォルトの名無しさん
07/09/28 01:25:01
なんでそんなに七行にこだわるのだろうか?
なーなーなななーなななーなーなー(DJ OZMA!)
397:デフォルトの名無しさん
07/09/28 01:26:17
>>390
プログラマの中では共通理解が出来ているから良いんだよ。
1行80桁というのはテレタイプとかの時代からなのかな。
今でも端末エミュレータを開くとデフォルトで横幅80桁の
表示になるよ。7行というのはDVDのコピーガードを、とある
学生がたった7行のスクリプトで破ったという故事から。
398:デフォルトの名無しさん
07/09/28 01:32:17
>>397
プログラマの中で共通っていうのは分かるが、問題はそこじゃない。
行という言葉に対してどういう定義がされているのか?
そもそも7行にこだわる意味があるのか?
それらを含めたら、7行なんていうこと自体がナンセンスなのさ。
399:デフォルトの名無しさん
07/09/28 01:36:54
何を問題にして何を言ってるのかわからんが、酔ってるのか?
400:デフォルトの名無しさん
07/09/28 02:23:44
長かろうが短かろうが正しく動くプログラムが良いプログラム
その上で仕様変更があるなら正しく変更できるプログラムが良いプログラム
401:デフォルトの名無しさん
07/09/28 02:31:16
「7行プログラム」を知らない素人が、的外れな突込みをして恥かいたってとこか
402:デフォルトの名無しさん
07/09/28 02:32:38
cならせめて2行でしょ
403:デフォルトの名無しさん
07/09/28 04:28:09
>>401
知っているからこそ疑問に思ったんだろ。そういう定義による7行ってのが
果たして意味があるのか?って話。むろん、こだわる必要がない以上無意味。
また、言うなれば実行プログラムのサイズや使用するライブラリの制限をした方が面白そうなんだが
404:デフォルトの名無しさん
07/09/28 04:34:43
URLリンク(pc.2ch.net)
405:デフォルトの名無しさん
07/09/28 05:06:40
なんでこの人恥の上塗りしてるの?
406:デフォルトの名無しさん
07/09/28 07:49:46
>>403
いや、明らかに知らなかったよ。まあ良いじゃん。
407:デフォルトの名無しさん
07/09/28 11:52:55
今も現役
七行プログラミング part5
スレリンク(tech板)
七行プログラミング
スレリンク(php板)
408:333
07/09/28 21:42:48
ちょっと>>381のコードは忘れてください
シャッフル処理が明らかにおかしいことに気づきましたorz
カード重複しまくりじゃん……
409:デフォルトの名無しさん
07/09/28 22:13:04
だが断る
410:333
07/09/28 22:13:46
void shuffle(int *cards){
int i,r;
srand(time(NULL));
for (i=0; i<CARD_MAX; i++) {
r = (i+1.0) * rand() / (RAND_MAX + 1.0);
cards[i] = cards[r];
cards[r] = i;
}
}
shuffle関数をこれに置き換えれば大丈夫です。多分。
>>388
改行・空白が少ないってことですか?
411:デフォルトの名無しさん
07/09/28 23:12:40
シャッフルじゃなくて
> #define CARD_RANK(n) ((n)/13 == 4 ? JOKER_RANK : ((n) + 11) % 13)
のせいじゃね?
あと、>410 と >381 のシャッフルに違いがあるとは思えんのだが
412:デフォルトの名無しさん
07/09/28 23:31:15
>>410
このシャッフル(?)って、全員の枚数は均等になるの?
たとえば53枚を5人で分けたら、3人11枚で2人は10枚になる?
413:デフォルトの名無しさん
07/09/28 23:35:26
このシャッフルはただたんにカードをきるだけであって配るではないんじゃないの?
414:デフォルトの名無しさん
07/09/28 23:40:43
>>413
そうだね
415:デフォルトの名無しさん
07/09/29 00:00:27
>>410
細かいことだけど、ループはi=0からじゃなくてi=1からでok
416:デフォルトの名無しさん
07/09/29 00:09:57
>>413>>414 ごめん、勘違いしてた。
>>410
>>388もオレなんだけど、空白については>>328のほうのコードに対するコメントね。
ただ、>>333のコードでも、
int turn(int *cards , int *hasnum , int *fieldcard , int fieldnum , int pnum){
if (ptype[pnum] == MAN){
...
}
else if (ptype[pnum] == COM) num = AIturn(cards , hasnum[pnum] , fieldcard , fieldnum , nextindex);
if (num == PASS) (ptype[pnum] == MAN) ? puts("USER:PASS!") : printf("COM%d:PASS!\n" , pnum);
else {
...
}
return num;
}
上からゆっくり読めば分かるんだけど、たとえば
}
else if (ptype[pnum] == COM)
num = AIturn(cards , hasnum[pnum] , fieldcard , fieldnum , nextindex);
if (num == PASS)
(ptype[pnum] == MAN) ? puts("USER:PASS!") : printf("COM%d:PASS!\n" , pnum);
else {
って感じで空行を入れたりインデントしたりすれば、もちょっと分かりやすいかなと思うんだ。
いや、オレの読む力が無いだけかも知れんので、
こういう風に感じる人もいた、とだけ覚えておいてくれれば。
417:デフォルトの名無しさん
07/09/29 00:13:12
ブロックで囲まない一行をインデントするのはイヤだ
418:333
07/09/29 00:15:36
>>411
CARD_RANKどっかおかしいですかね?
シャッフルについては、cards配列の初期化とcards[i]とcards[r]のスワップをまとめた感じの処理ですから、
>>381だとcards[r]=i;はいいとしても、cards[i]=r;はcards[r]に元々rが入っていなければスワップになっていないと思います。
cards[i]の元の値はiと考えても問題ないので(実際には値不定)、>>410で良いと思います。多分。
>>412
>>413さんの言うとおりです。それと多分54の約数以外だと多分バグります。
>>415
それだとcards[0]の値が不定のままの可能性があると思ったのですが……初期化処理はしていないし、グローバル変数でもないので。
(グローバルでなくては勝手に初期化されないんですよね?)
>>381だとcards[0]=0;と入れていたんですが、まとめた方がすっきりするだろうと思ってまとめました。
419:333
07/09/29 00:19:45
リロードしてなかった……
>>416
今度から気を付けてみます
どっか別のところは一行ifでもインデント入れてたような気もしますが……統一しなきゃ
本当いうと三項演算子にifの変わりするのもあまり褒められたもんじゃないんでしょうけどね
420:デフォルトの名無しさん
07/09/29 00:20:57
ああ、すまん勘違いしてた。
でも、配列を{0}で初期化しといて無駄な計算とスワップ減らした方がよくね?
421:333
07/09/29 00:28:10
>>420
ああ、それ、この前から気になりつつも検索してなかったですw>配列を0初期化
{0}でできるんですね。じゃあそれでやっておきます。
ありがとうございます。
なんかレスしてばかりで悪いのでそろそろ何か自粛しときます。
422:デフォルトの名無しさん
07/09/29 00:31:40
>>421
学生でここまでできるならすごいと思うぞ。特にわざわざCでトランプとか作る奴も少ないし
423:デフォルトの名無しさん
07/09/29 00:41:31
>>422
今時それくらいじゃすごいなんて思わんけど。むしろやっている奴は
それくらい出来て当たり前。俺なんてC言語を週1の授業で習った程度で
本格的にやらずとも、学生時代は普通にトランプゲームなんて作ってましたが何か?
424:デフォルトの名無しさん
07/09/29 00:48:09
Cを独学で2週目に突入。毎日やってるわけじゃないけどこのスレに書かれてるプログラムくらいは
完璧とは言わないけど少しは読めるようになった。ただこれを作れって言われたらシャッフルするところで
限界
425:デフォルトの名無しさん
07/09/29 00:49:15
>>423
はいはい、すごいすごい
426:デフォルトの名無しさん
07/09/29 00:51:13
あのな、今じゃ普通にプログラム開発環境なんて手に入るし
PCも10年前と比べたら性能は雲泥の差でしょ。それに日本は
生活水準も上がってきて、パソコンなんて簡単に手に入る。
この程度のことを高校生で出来ない奴が情報系の学校に来ても
将来が危ういだけなんだよ。すごいじゃなくて当然。
427:デフォルトの名無しさん
07/09/29 00:54:25
>>426
はいはい、すごいすごい
428:デフォルトの名無しさん
07/09/29 00:55:40
できる奴から見たらたいしたことないし、できない奴から見たら凄い、
で良いじゃん
429:411
07/09/29 00:55:52
わかった cards[i]=r; と cards[i] = cards[r]; が違うのか。理解した。
((n) + 11) % 13 って
n
=0 -> 11
=1 -> 12
=2 -> 0
=3 -> 1
:
=11 -> 9
=12 -> 10
ってことだ! すんません理解できますた。おかしくないです。
430:デフォルトの名無しさん
07/09/29 00:58:31
すごい の基準が主観的、自分基準だからダメなんだよ、成長しない奴ってのは。
431:デフォルトの名無しさん
07/09/29 01:03:04
パソコン以外できなさそうな感じだな
432:デフォルトの名無しさん
07/09/29 01:05:03
>>421
なんとなく勘違いしてそうなので書いておく。
配列を{0}で初期化するってのは、
int array[10] = {0};
ってすると、array[0] 〜 array[9] が 0 になる、ってことを期待しているんだろうし
実際にそうなるんだけど、
これは array[0] は {0} で指定されているから 0 になって、
array[1] 〜 array[9] は何も指定されていないから 0 になるんだよ。
だから、int array[10] = {1};
ってやっても array[0] だけが 1 になって、
array[1] 〜 array[9] は何も指定されていないから 0 だ。
間違って覚えないように。
433:デフォルトの名無しさん
07/09/29 01:07:02
パソコンが出来るという意味すら曖昧だろ。単にパソコンで簡単な操作をするくらいなら
誰でも出来る。しかし、プログラミングが出来る奴でもパソコンの操作が苦手な人もいる。
なんだかんだ言っても、プログラミングには数値計算や理論的な考え方が必要になる。
もっと柔軟な考えを持つんだな。
434:デフォルトの名無しさん
07/09/29 01:11:15
>>433
たいしたソースでなくても、実際に上げてるぶんだけ、口先だけのお前よりよっぽど凄いよ
435:デフォルトの名無しさん
07/09/29 01:12:23
初期化子の足りない要素は0で初期化する。
a[5]={0}はa[0]を初期化するだけで他の初期化子の足りない要素は全部0、
a[5]={0}は{0,0,0,0,0}ってことだしa[5]={0,1}は{0,1,0,0,0}になる
436:デフォルトの名無しさん
07/09/29 01:13:11
>>432
更新せずに書き込んだ俺涙目
437:デフォルトの名無しさん
07/09/29 01:13:59
>>434
> 口先だけのお前よりよっぽど凄いよ
へ?別に 俺より なんて基準はどうでも良いんだけど。
けど、あれくらい俺には10年前には出来ていたが?
438:デフォルトの名無しさん
07/09/29 01:22:16
口でできてたって言うだけなら誰でもできるからな
439:デフォルトの名無しさん
07/09/29 01:26:33
>>437 100%誤作動を起こさないプログラムを作るのは可能だと思いますか?
440:デフォルトの名無しさん
07/09/29 01:29:20
>>423が出来ようが出来まいが凄かろうが凄くなかろうが、
このスレの人間にとっては非常に興味のない事なんだが、空気悪くしたいだけなら他所へ行ってくれ
441:デフォルトの名無しさん
07/09/29 03:33:58
>>410
> srand(time(NULL));
これも細かく厳密に言えば、time()が返す値は time_t 型。
srand() に与える引数は unsigned int 型。
今、BCCのtime.hの中身を見てみたら
typedef long time_t;
と定義されていた。符号ありのlong型。
っつーわけで、こまきゃ〜こと言ったがや、srand( (unsigned int)time(NULL) );
ってキャストしておくのが適切だぎゃや。
ちゃんこうまでに
URLリンク(www.bohyoh.com)
URLリンク(www.bohyoh.com)
442:デフォルトの名無しさん
07/09/29 03:36:11
>>440
いや、そうやって食いついてくる負け犬のお前が吠える方が空気を悪くしていると思うんだが?
所詮負け犬の遠吠えだろ?みっともないからやめろ。出来る奴を相手にすると
弱腰になるどころか、詰まらん粗探しを始めて、自分基準で叩き始めるタイプだろ?
出来て当たり前が出来ない奴が何をほざいても、世の中通用しないよ。
ほらっ、路上を見てみろ。当たり前に守る道路交通法を守らない奴が
流れを悪くした方が場の空気、流れが悪くなるだろ?みんながみんな守ってりゃ
流れは悪くならない。しかし、車の数が多くなると、人の数が多くなると
人間ってそういう状況に耐えられなくてね。つい我先にとでしゃばっちゃう奴もいるんだよ。
それが君だ。
443:デフォルトの名無しさん
07/09/29 03:50:51
>>441
正直どうでもいいし、わかってて面倒だから省略してるのがほとんど。
444:デフォルトの名無しさん
07/09/29 03:58:38
よくこんな長文思いつくなw
とりあえず消えないならコテつけろよ
445:デフォルトの名無しさん
07/09/29 04:05:15
>>444
っつかお前みたいに煽る方が鬱陶しい。消えるならお前の方だろ
446:デフォルトの名無しさん
07/09/29 04:06:26
>>443
> 正直どうでもいいし、わかってて面倒だから省略してるのがほとんど。
それが素人志向、なんつって。最近じゃコンパイラ任せな人も少なくないが
知ったかぶるとボロが出て言い訳もみっともないぞ。
447:デフォルトの名無しさん
07/09/29 04:08:10
>>423
はいはい、すごいすごい
448:デフォルトの名無しさん
07/09/29 04:08:23
>>446
お前、いままで散々ボロだしときながらまだ懲りてないの?
449:デフォルトの名無しさん
07/09/29 04:25:33
何kmも信号のないような田舎では道交法を遵守するほうが周りに迷惑な場合もある
450:デフォルトの名無しさん
07/09/29 04:36:22
前にも型変換でボロだしまくったのに、もう忘れちゃったのか
451:デフォルトの名無しさん
07/09/29 04:53:41
すごいからすごい
すっごくすごい
452:デフォルトの名無しさん
07/09/29 05:02:21
なんかすごくて可哀想なのが沸いてるな・・・
Cはド素人だが俺も勉強がてら何か作ってみようかな
何作ろう、簡単そうなカードゲームってなんかないかしら
453:デフォルトの名無しさん
07/09/29 06:01:11
>>439
素人かどうか見極めるのにちょうどいい質問だな
454:デフォルトの名無しさん
07/09/29 06:17:56
> 100%誤作動を起こさないプログラムを作るのは可能だと思いますか?
これはプログラムそのものに問題がある場合もあるが、誤作動を起こす動作環境
(ハードウェア、OS)にも話が及ぶんで、現実的には無理。素人とか以前に
100%誤作動を起こさないものがあると言わなきゃ良いだけだよw
455:デフォルトの名無しさん
07/09/29 06:26:28
極端な話をすれば、100%誤作動を起こさないプログラムも存在することは可能。
ただし、ユーザが誤作動をしていると思わなきゃ良いだけの曖昧さはあり。
まぁ、あの程度のソースで すごい なんていう奴の話は聞き飽きたから、失せろ。
456:デフォルトの名無しさん
07/09/29 06:32:42
>>453
っつか、揺さぶっている奴らは自分らがそれについて見解を示せよ。
他人に質問するばかりで、自分らは何も答えることが出来ないくせに
その程度って評価するのはおかしい。むしろ、自分が知らなかったことを
付き返されてファビョってんだろ?time()にしろsrand()にしろ。女々しいぞ、お前等。
457:デフォルトの名無しさん
07/09/29 06:37:13
煽りじゃなくトランプゲームのソースを書いてくれ
458:デフォルトの名無しさん
07/09/29 06:40:21
>>456
お前441?
引数に代入されるとき型変換されるから、キャストする必要なんて全くないよ
459:デフォルトの名無しさん
07/09/29 06:51:28
あぁ、分かった
昨日7行云々でアホな事書いて煽られた奴が腹いせに荒らしてるのか
460:デフォルトの名無しさん
07/09/29 06:52:54
#include <stdio.h>
int main()
{
TranpuGame();
return 0;
}
461:デフォルトの名無しさん
07/09/29 06:57:14
世の中、完全犯罪は可能ですか?って質問に答えてみろよ?w
462:デフォルトの名無しさん
07/09/29 07:47:42
完全犯罪は露呈しない
だから犯罪にならない
故に完全犯罪は存在しない
463:デフォルトの名無しさん
07/09/29 07:50:46
C++でstaticなメソッドを使って
int main() {
Game::Main::Start();
}
見たいに書けたら格好よぐね?
意味もGameモジュールのメインモジュールをアプリケーションエントリポイントから
起動してるんだなぁってはっきりしてるし
少なくとも俺が昔使ってた
Game()();よりは判りやすい筈w
464:デフォルトの名無しさん
07/09/29 08:06:34
>>463
それが出来ないという罰ゲームのノリがわからない奴だな
465:デフォルトの名無しさん
07/09/29 09:08:12
作りやすいトランプゲームっつーと…ソリティア系かね?
要は一人遊び系
コンピュータの思考ルーチンとか要らんし
クロンダイク(Win付属のソリティアと一緒)とか
イーブン、クローバー、ピラミッド、スパイダー…
ソリティア系だけで結構色々ある
466:デフォルトの名無しさん
07/09/29 14:58:32
いっちゃん単純と思われるのは 神経衰弱
467:デフォルトの名無しさん
07/09/29 14:59:55
>>466
それは言おうとしたが単純なだけに作るのもつまらなく
言えばお前が作れ言われると思って言わなかった。
468:デフォルトの名無しさん
07/09/29 15:05:42
>467
コンピュータの思考ルーチン考えるのは単純じゃないな
...いんちきするならそうでもないがw
469:デフォルトの名無しさん
07/09/29 15:13:20
>>468
神経衰弱には
あるプレイヤーに分かっていて他のプレイヤーには分からないという要素がない。
だからAIが人間的な忘却をエミュレートしない限り勝敗は純粋に確率的なものになるということ。
470:デフォルトの名無しさん
07/09/29 15:14:05
一度開けたカードは全部記憶しておいて組があれば開けて取る
組がなければまだ開けてないカードをランダムに一枚開けて記憶しておいたカードの中に組となるものがあれば開ける
なければもう一枚ランダムに開く
これ以外に何か戦略ある?
471:デフォルトの名無しさん
07/09/29 15:15:36
神経衰弱なのに7並べ思い浮かべてたww
472:デフォルトの名無しさん
07/09/29 15:17:00
> なければもう一枚ランダムに開く
これ、相手に有利になっちゃうだろw
あえてすでにひらいてあるカードを選ぶ、って戦略じゃね?
473:デフォルトの名無しさん
07/09/29 15:20:38
>>472
ならば相手も同じ戦略を取ればよし
進行が遅くなるだけで結果は変わらない
474:デフォルトの名無しさん
07/09/29 15:23:33
なるほど
最後は未知のカードを開けない方がいいのかな?
期待値はゲームの段階や既知のカード数によって変わらないかな?
475:デフォルトの名無しさん
07/09/29 15:23:58
千日手は引き分けですかね?
476:デフォルトの名無しさん
07/09/29 15:25:07
> 進行が遅くなるだけで結果は変わらない
本当に?
2枚目あけたときに 1枚目と同じになるより 過去に開けていたカードと同じなる方が多いと思うんだけど?
次のプレイヤーが有利になるじゃん
477:デフォルトの名無しさん
07/09/29 15:30:49
相手の戦略にあわせるっていう意味じゃないかな?
478:デフォルトの名無しさん
07/09/29 15:31:59
やっぱり477は取り消します
479:デフォルトの名無しさん
07/09/29 16:07:31
いや477のとおりだよ
双方同じ戦略で戦えば有利不利ということもない
480:デフォルトの名無しさん
07/09/29 16:13:46
加えて相手が一枚だけの戦略をとっていることが丸分かりなんだから
論理的に類推しうる要素が全くないんだよ
481:デフォルトの名無しさん
07/09/29 19:52:15
>>462
なるほど、確かに犯罪があったのかどうかも分からないなら
完全犯罪以前に闇に葬られるであろう。では、犯罪があったが
犯人が分からない。指紋など決定的な証拠があるけど捕まらない
といった類ではどうだね?まぁ、あれこれ挙げたらキリがない。
とにかくこの世にはすべてにおいて「完全」「完璧」などないと言って過言ではない。
今もこうして、予期せぬ事故は起こる・・・
482:デフォルトの名無しさん
07/09/29 20:23:12
完全犯罪やバグの無いプログラムを確実に作り出す方法が無いだけで、
どちらも普通に存在するだろ
483:デフォルトの名無しさん
07/09/30 00:53:04
>>482
だからそういうことだって。いちいち 分かりきったことを偉そうに 解説するなよ、青二才
484:デフォルトの名無しさん
07/09/30 22:45:28
バグを抹消することは難しい。ソフトウェアの規模がますます巨大化・複雑化し、
すべての可能性をプログラムすることが不可能になってきたからである。
ある研究報告によれば、5000年間プログラムを実行して1回しか障害を起こさないような小さなバグがシステムの安全性を損ねている。
さまざまな角度から検査を行うのだが、米国の民間航空機のように1時間当たり10億分の1以下の障害発生率が要求されるシステムでは、
こうしたバグを除去するには数十万年間も検査をし続けなければならない
485:デフォルトの名無しさん
07/09/30 22:46:43
>>484は10年以上も前の話だから今はちょっと事情が変わってるかな
486:デフォルトの名無しさん
07/10/01 02:41:58
商用アプリのバグに関して免責事項を無効にする法律を作ればある程度は
487:デフォルトの名無しさん
07/10/01 22:59:11
Visual C++ Express Edition + プラットフォームSDK
Wnidows2000/XP/Vista用 要.NET Framework2.0
ソース+exe
やっつけなんで無駄多し、AIは超手抜き、誰か作って。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
488:デフォルトの名無しさん
07/10/01 23:30:45
Turbo C++ Explorer
Wnidows2000/XP/Vista用 要.NET Framework2.0
ソース+exe
>478のTurbo C++版
URLリンク(kansai2channeler.hp.infoseek.co.jp)
489:デフォルトの名無しさん
07/10/01 23:43:52
ターボってついたら強そうに見えるよな
490:>487
07/10/01 23:55:13
同スート3枚以上のシーケンスなしか?
2上がりありか?
革命は試せなかったけどどうなの?
491:デフォルトの名無しさん
07/10/02 06:16:46
>>490
見た目があんまりショボイと餅平衛がどっか行っちゃうから
C言語でコンソールアプリの条件を満たしたソレほどショボくないUIを提示しただけ。
中身はサンプル程度に組んであるだけ。
AIに至っては何の工夫も無く兎に角出せるカードを出してるだけ。
同スート3枚以上、革命…そんなローカルルールは知らん。
2上がりあり。つーか作りこんでないから最低限のチェックしか入ってない。
改造して使いまわしやすいように作ったつもりだしツールもフリーで手に入るVC++とTurboC++のどっちでもOKにした。
#unicodeの扱いさえわかればBCCでもgccでもビルド出来る筈だしスートの表示を諦めれば古いコンパイラでもビルド出来る。
なので中身の作りこみは他の奴に任せる。
492:デフォルトの名無しさん
07/10/02 06:20:53
環境依存か
493:デフォルトの名無しさん
07/10/02 18:20:10
タロットカードへの拡張に備えて「正位置・逆位置」の概念を導入する
494:デフォルトの名無しさん
07/10/03 00:02:00
ところで餅平衛って何?
もちひらまもる?
495:デフォルトの名無しさん
07/10/03 03:30:30
mihimaru GTの阿久津博子さんが好みです。だから何やて?言ってみたかっただけっす。
スレ違いすまそ。
496:デフォルトの名無しさん
07/10/03 04:16:50
>>494
文脈から一見さんあたりのことを言っているのだろう、
新語か?とぐぐってみたが見つからない。
でモチベーションをゆとりっぽく略したものと結論付けた。
今時C使ってCUIでやろうって>1の時点で
モチベーションは限りなくゼロに近いんだから
いまさらどうこう言っても意味がない。
497:デフォルトの名無しさん
07/10/05 19:38:38
誰もいないな?
498:328
07/10/06 00:53:52
シーケンスとペア、重なって持っている場合
どんな戦略がいい?
出せるなら出す、ってなんだかなぁ...
あと、場より多い枚数のペアがある時、多い枚数のシーケンスがある時
とか...
いきづまってまつ
499:デフォルトの名無しさん
07/10/06 19:40:01
基本ルールがよくわからんのだよ
500:デフォルトの名無しさん
07/10/06 22:02:37
>>498
現時点で場に出たカードを除いた状況で、他のプレーヤーがより強いカードを
出せる確率を計算するようにしたよ。
場のカードを全部数えるのかよコンピュータは、とは思うけど、プロ棋士同士で
お遊びでやった大富豪で覚えてた、って話もあったから有りかと。
501:デフォルトの名無しさん
07/10/06 22:20:01
人とプレイするときも、絵札以上は覚えとくから別に構わないと思う
502:デフォルトの名無しさん
07/10/06 22:50:31
>>500
で,強くなった?
503:デフォルトの名無しさん
07/10/06 23:34:17
大富豪最強AIでも作るのか?
504:デフォルトの名無しさん
07/10/06 23:39:27
勝負するたびに成長するコンピューターとかどんだけwwww
505:デフォルトの名無しさん
07/10/07 00:46:32
>504
少年漫画の世界にはいそうだなw
506:デフォルトの名無しさん
07/10/07 01:08:46
大富豪で世界征服か
507:デフォルトの名無しさん
07/10/07 01:49:27
悪のマッドサイエンティストをやりたかった
自称主人公を科学の力でこてんぱんにしてくやつ
508:デフォルトの名無しさん
07/10/07 03:16:57
コロコロとかボンボンでありそうだなwwww
509:デフォルトの名無しさん
07/10/07 18:16:09
>>502
結構。人並みの対戦能力はある。
510:デフォルトの名無しさん
07/10/07 23:39:54
>500
「他のプレーヤーがより強いカードを出せる確率を計算する」って、そんでどうするの?
より強いカードを出せる確立が高い場合は、自分は出さない、って事?
場に出てないカードを考慮するだけ? 他のプレーヤーの持ち枚数とかは何か考慮している?
511:デフォルトの名無しさん
07/10/08 00:14:26
>>510
そこで得られた確率を、>>281の思考ルーチンに突っ込むの。
要するに、>>500は認知、>>281で判断。
>他のプレーヤーの持ち枚数とかは何か考慮している?
当然。相手が一枚しかないなら、階段出せば相手は嫌でもスルーだし。
512:デフォルトの名無しさん
07/10/08 00:54:04
>281
404 Not Found
513:デフォルトの名無しさん
07/10/08 13:07:10
今度こそ誰もいないな
514:デフォルトの名無しさん
07/10/08 13:10:33
うむ
515:127
07/10/08 20:52:17
誰もいないようなのでしばらく独り言をば
まずケースに入ったトランプを用意しよう。
ケースの中にはトランプが順番に入っている。
A,2,3,…Q,Kのランク順でスペード,ハート,ダイヤ,クラブのスート順だ。
誤解のないように例を出すと,スペードのKの次はハートのAになる。
またクラブのKの次にはJOKERが二枚入っている。
この計54枚のカードを使ってゲームをするわけだ。
516:デフォルトの名無しさん
07/10/08 20:55:29
ほほう、それで
517:デフォルトの名無しさん
07/10/08 21:34:11
構造体で作ったらあと楽じゃない?
518:127
07/10/08 21:40:59
私以外まだ誰もいないようだが話を続けよう。
さて,大富豪というゲームを君たちは知っているかな?
1970年代に日本のトーキョーで生まれたとされ,かつては大貧民と呼ばれたゲームだ。
プレイヤーは複数で,ゲームの最初に彼らに等しくカードを全て配る。
等しくと言ってもプレイヤーの数によって端数が出る。
端数の処理の方法はいろいろあるが,今回は端数を気にせず最後まで順に配り終えることにしよう。
おっと,言い忘れたが,今回シャッフルはしない。
519:デフォルトの名無しさん
07/10/08 21:53:09
まだ君以外誰一人とここにはいないので、
そのまま話を続けましょう
520:127
07/10/08 22:43:16
各プレイヤーは自分に配られたカードの中から
役―1枚,2枚以上の同位札,もしくは3枚以上の同一スートによるシーケンス(※注:連番)―を作り,順次場に出していく。
持っているカードが無くなれば,あがりとなってプレイの輪から抜けることができる。
残りのプレイヤーが一人となった時点で1ゲーム終了となり,あがりとなった順に順位が決定する。
最後に残ったプレイヤーは最下位だ。
場とは役を出す場所であり通常1ゲームに複数の場が作られるが同時に複数の場は存在できない。
場が破棄されることを場が流れると言い,場が流れたあとは新しい場が1つ作成される。
ゲーム開始時に最初の場が1つ作成される。
場に最初に役を出すプレイヤーを親と呼び,その場に出すことの出来る役の種類を決定できる。
最初の場の親を決定する方法は,これも様々な方法があるが,今回はダイヤの3を配られたプレイヤーとする。
カードは3が最も弱く,続いて4,5,…,Q,K,ときてA,2の順に強くなる。
そしてJOKERは2より強く,またワイルドカードとしても使用できる。
カードの強さに遵って役の強さが決まり,場に出す役は場の役―最後に場に出された役―より強くなければならない。
出せる役がない場合はそのプレイヤーはパスとなり次のプレイヤーの番となる。
場のプレイヤー―場の役を出したプレイヤー―以外のプレイヤーが全てパスとなったとき,
その場は流れ,そのプレイヤーが次の場の親となる。
場のプレイヤーがあがりとなり,かつ残りのプレイヤーが全てパスとなったとき,
その場は流れ,そのプレイヤーの前に場のプレイヤーであってまだあがりでないプレイヤーが次の場の親となる。
基本的なルールはこんなところだ。
何か質問は?
では次回。
521:デフォルトの名無しさん
07/10/09 01:24:26
革命ルールはござらんのか!
CPUの人間的思考の実装方法はまだか!
522:デフォルトの名無しさん
07/10/10 01:12:11
基本戦術
既に場に出ているカードを覚える
Q以上のペアは強い
2はペアで使うよりも1枚ずつで2回使った方が有利
崩すときはなるべく強いペアをくずす
特に、弱いペアは絶対崩してはいけない
シークエンスは、原則として弱い(10以下)ものの方が使いやすい
4枚以上のシークエンスは強い
3枚組とシークエンスが複合している場合は、シークエンス+ペアが鉄則
強いもので、特にペアと複合している場合(例:K、A,A,2)は、むしろばらした方が強い
シークエンスとペアが複合している場合は、状況に応じて、使い分ける
ペアが一組(例:6,7,7,8)ならば、シークエンス優先
ペアが二組(例:6,6,7,8,8)ならば、微妙
ペア3組(例:6,6,7,7,8,8)ならば、ペア優先
523:127
07/10/13 18:56:32
ここにはもう誰もいないのだ
524:デフォルトの名無しさん
07/10/13 18:56:53
阻止
525:127
07/10/13 22:52:16
そして誰もいなくなった
526:デフォルトの名無しさん
07/10/13 22:52:48
阻止
527:127
07/10/13 23:00:25
プログラマーには精神病を患う者が多いと言われるが
その病状の一つに自分が誰かに監視されているといった妄想がある
そうここには
誰もいない
誰もいない
誰もいない
528:デフォルトの名無しさん
07/10/13 23:09:56
ものすごく寒いことになってるね
529:127
07/10/13 23:45:04
自分の内には誰もいない
従って自分の外にも誰もいない
誰かがいるという幻想こそが
不幸の根源なのだ
530:デフォルトの名無しさん
07/10/13 23:46:18
みょん
531:デフォルトの名無しさん
07/10/14 00:26:02
リアルタイムで中二病患者を見たのは久しぶりだわ
532:127
07/10/14 09:51:02
このスレに誰もいませんよ
533:127
07/10/14 22:38:02
誰もいないことを確信した
534:デフォルトの名無しさん
07/10/14 22:55:39
これが噂の、かまってちゃんか
535:127
07/10/14 23:08:35
誰もいないということを疑う余地はない
536:127
07/10/14 23:22:38
誰も居なかった
537:デフォルトの名無しさん
07/10/15 12:56:27
そんなことより、大富豪作りやがれ
538:127
07/10/15 19:47:08
何故誰もいないのか
実は疑問がないわけではない
539:デフォルトの名無しさん
07/10/16 01:33:22
ほほう、それで
540:127
07/10/16 03:00:00
さて誰もいなくなったところでそろそろ本編をば
最初はシンプルに行こう。
ややこしいことは無しだ。
プレイヤーの数は5人とし,全て同じAIを使用する。
カードは1デッキとジョーカー2枚の計54枚とし,毎回ゲームのはじめにシャッフルする。
初回は最初に登録されたプレイヤーからディールする。
そしてダイヤの3を持ったプレイヤーを最初の場の親としてゲームを開始する。
初回以降は前回最下位のプレイヤーの次のプレイヤーからディールする。
そして前回最下位のプレイヤーを最初の場の親としてゲームを開始する。
役はシーケンスが3から5枚,同位札が2から5枚,そして1枚札,とする。
AIが場の親のとき,シーケンス,同位札,1枚札,の順に,枚数のより多い役のうち,弱い役から出していく。
AIが場の親でないとき,場の役と同種でより強く,かつ手持ちのカードで作れる最も弱い役から出していく。
またジョーカーをワイルドカードとして使用可能なときは使用する。
同様にジョーカーを同位札,または一枚札として使用可能なときは使用する。
541:デフォルトの名無しさん
07/10/16 15:47:13
最初でシンプルに行くなら、
・人数は2人でジョーカーは無しで52枚
・始める人も固定、順番も同じ
・カードのシャッフルなんてしない
辺りが適切では無いか?
流れをまず作って、他は後から付け加えると楽ジャマイカ?
542:127
07/10/16 18:11:36
仮に誰かがいたとしても
誰であるかも分からないのに
誰かがいるという認識が間違いでないと
どうして言えよう
543:デフォルトの名無しさん
07/10/16 19:11:11
その微妙なコテハンはなんだい?
544:127
07/10/16 20:35:00
ここで面白いのは自己と他者の区別は
(厳密にはそうではないが実用上)
自己の認識に委ねられているということだ
すなわちそれが自分の書いたものであるという記憶によってのみ
自己の他者との境界を認識しうるのである
加えてそれが自分の書いたものであるという証明が自助努力の範囲内において不可能であるが故に
誰もその存在を主張する以上のことはできず
したがってここには誰もいないという認識を誰も否定することは出来ないのである
「匿名非同期コミュニケーションの真実(非売)」より引用
545:127
07/10/16 20:39:27
じゃあ俺も
546:127
07/10/17 21:12:19
そうこうしているうちに
本当に誰もいなくなってしまった
547:デフォルトの名無しさん
07/10/18 02:56:09
文字列に強さを持たせるのがわkらん
548:127
07/10/18 03:04:03
さてそろそろ続きをば
シンプルという点に疑問の余地ありとの意見だが,
たしかに上記のルールでは各ゲームごとの独立性が不十分であり,
出発点とするには不適切かもしれない。
そこで,ディールの開始プレイヤーと最初の場の親に関するルールについて検証してみよう。
まず以下のことについて確認しておく。
全てのプレイヤーが同一のアルゴリズムに従ってプレイするとき,
その結果は各プレイヤーの持ち札と最初の場の親によって一意に決定される。
ここで,各プレイヤーの持ち札と最初の場の親が完全にランダムに決定されるとき,
任意のプレイヤーが任意のランクになる確率は等しくなる。
549:デフォルトの名無しさん
07/10/18 03:07:49
こんな大袈裟に気持ち悪いレスで熱弁してるくらいだから、さぞ素晴らしいものを作ってくれるんだろうな
550:デフォルトの名無しさん
07/10/18 03:21:54
口だけ野郎の典型的パターンに何を期待してるんだよ
551:127
07/10/18 04:11:40
私は私が常に不真面目であることを知っている
故に私は私の言葉を全く信用していない
今回は,ゲーム回数を一万回とし,各ゲームでの各プレイヤーのランクを記録した。
プレイヤーをTestA,TestB,TestC,TestD,TestEの順に登録した。
ランクは0から4までの値であり,値のより大きいランクを上位とする。
1.
各ゲームのディールの開始プレイヤーをローテーション制に
各ゲームの最初の場の親をダイヤの3を持つプレイヤーにした場合
結果を以下に示す。
行を各ゲームのランク,列をそのゲームの次のランクとし,該当するゲームの回数を計測した。
また各ランクとなったゲームの回数を計測し,これを列Totalに示す。
括弧内の数値は各行の各計測値を各行のTotalの値で割った値である。
これは現在のランクが決定しているとき次回のランクへ遷移する統計的確率を表す。
********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________
(省略されました・・全てを読むことはできません)
___________________________ Player TestE Record ___________________________
[0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 398(0.201) 389(0.196) 398(0.201) 409(0.206) 390(0.197) 1984
[1] : 387(0.195) 401(0.202) 357(0.180) 430(0.217) 406(0.205) 1981
[2] : 406(0.199) 425(0.208) 426(0.209) 391(0.191) 394(0.193) 2042
[3] : 418(0.209) 339(0.169) 460(0.230) 379(0.189) 408(0.204) 2004
[4] : 374(0.188) 428(0.215) 401(0.202) 395(0.199) 391(0.197) 1989
552:127
07/10/18 19:43:52
自分が本当に理解しているのは過去の自分だけである
おっと言い忘れたが,最初のゲーム開始時のプレイヤーのランクは全て0だ。
それから連番は1.ではなく(1)に訂正する。
さて上記の結果からは,Totalの値が全て2000付近であることが分かる。
ゲーム回数は10000であるから各ランクになる確率は等しく1/5ということになる。
つまり,勝負は完全に時の運ということだ。
更に,各ランクから各ランクへの遷移確率も全て0.2付近である。
つまり,現在のランクと次のゲームのランクとの相関はないということを意味する。
大富豪がゲームとして成立するには
人間の感情的な部分を考慮し,それをある程度実現するルールが必要である。
(a)誰も最下位にはなりたくない。最下位になったとしたら出来るだけ早く最下位を脱したい。
(b)誰もが一番になりたい。一番になったとしたら出来るだけ長く一番であり続けたい。
この二つを実現するルールは既に存在する。
それらについて統計的確率の側面から検証してみよう。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4753日前に更新/153 KB
担当:undef