C言語でトランプゲームを作りたい
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/09/16(日) 06:46:13CUIでもいいからみんなで作ろう
0002デフォルトの名無しさん
2007/09/16(日) 07:18:51〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
0003デフォルトの名無しさん
2007/09/16(日) 08:42:29俺はトランプ嫌いだから作らないけどお前は頑張れ。
決めたからには最後までやり遂げて見せろ。
0004デフォルトの名無しさん
2007/09/16(日) 08:54:450005デフォルトの名無しさん
2007/09/16(日) 10:25:150006デフォルトの名無しさん
2007/09/16(日) 12:54:530007デフォルトの名無しさん
2007/09/16(日) 13:13:470008デフォルトの名無しさん
2007/09/16(日) 13:26:040009デフォルトの名無しさん
2007/09/16(日) 13:28:05それ面白そう。
デジカメか何かで取り込んだ人間の顔写真から
顔の向きを判断するのが勉強になりそうだ。
0010デフォルトの名無しさん
2007/09/16(日) 13:39:09ポーカーの判定を作ってみたのですが止め方がわからないので教えて貰えますか
0011デフォルトの名無しさん
2007/09/16(日) 13:42:210012デフォルトの名無しさん
2007/09/16(日) 13:53:46#include<stdlib.h>
#include<time.h>
#define baba_no_kazu 9
int main(void){
char *moyou[]={"S","H","D","C"},
*suuji[]={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
int kaado[52+baba_no_kazu],i,j,k;
srand(time(NULL));
while(1){
int baba=0,hurassyu=0,sutoreeto=0,pea=0;
for(i=0;i<52+baba_no_kazu;i++)
kaado[i]=i;
for(i=0;i<52+baba_no_kazu;i++)
j=rand()%(i+1),k=kaado[i],kaado[i]=kaado[j],kaado[j]=k;
for(j=0,i=0;i<5;i++)
if(kaado[i]<52)printf("%s%s ",moyou[kaado[i]/13],suuji[kaado[i]%13],j|=1<<(kaado[i]%13));
else printf("BABA "),baba++;
for(i=0;i<9;i++)
if((j|(0x1f<<i))==(0x1f<<i))sutoreeto=i+2;
if((j|0x100f)==0x100f)sutoreeto=1;
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(kaado[i]<52&&kaado[j]<52){
if(kaado[i]/13==kaado[j]/13)hurassyu++;
if(kaado[i]%13==kaado[j]%13)pea++;
}
//つづく
0013デフォルトの名無しさん
2007/09/16(日) 13:54:20if(hurassyu>9&&sutoreeto>9)printf("ロイヤルストレートフラッシュ");
else if(pea+baba*2>6)printf("ファイブカード");
else if(hurassyu+baba*2>6&&sutoreeto>0)printf("ストレートフラッシュ");
else if(pea+baba*2>4)printf("フォーカード");
else if(pea+baba*2>3&&baba<2)printf("フルハウス");
else if(hurassyu+baba*2>6)printf("フラッシュ");
else if(sutoreeto>0&&pea<1)printf("ストレート");
else if(pea+baba*2>2)printf("スリーカード");
else if(pea>2)printf("ツーペア");
else if(pea+baba>0)printf("ワンペア");
else printf("ノーペア");
printf("\n");
}
return 0;
}
0014デフォルトの名無しさん
2007/09/16(日) 13:55:46どうやったらとまりますか?
0015デフォルトの名無しさん
2007/09/16(日) 13:58:57forループにして適当な回数でやめればいいじゃん
0016デフォルトの名無しさん
2007/09/16(日) 15:07:02他人のソースの丸写しか?
0017デフォルトの名無しさん
2007/09/16(日) 15:57:120018デフォルトの名無しさん
2007/09/16(日) 16:49:410019デフォルトの名無しさん
2007/09/16(日) 17:16:36http://ja.wikipedia.org/wiki/%E5%A4%A7%E5%AF%8C%E8%B1%AA
0020デフォルトの名無しさん
2007/09/16(日) 18:17:490021デフォルトの名無しさん
2007/09/16(日) 18:25:00出力はこんな感じで良いんじゃないの。難しい事は考えないで printf() だけで充分。
あなたの手番です...
手持ちのカード: [1:H-6],[2:H-J],[3:S-K],[4:JKR]
どのカードを切りますか?(1-4): 2
Heart の Jack で宜しいですか?(y or n): y
Heart の Jack を切りました
以下ry
0022デフォルトの名無しさん
2007/09/16(日) 18:27:240023デフォルトの名無しさん
2007/09/16(日) 18:30:330024デフォルトの名無しさん
2007/09/16(日) 18:34:08まあ気にすんな
0025デフォルトの名無しさん
2007/09/17(月) 00:34:200026デフォルトの名無しさん
2007/09/17(月) 00:52:170027デフォルトの名無しさん
2007/09/17(月) 00:55:200028デフォルトの名無しさん
2007/09/17(月) 01:29:09カードをランダムで配る関数、ソートする関数とか
0029デフォルトの名無しさん
2007/09/17(月) 02:57:050030デフォルトの名無しさん
2007/09/17(月) 03:21:230031デフォルトの名無しさん
2007/09/17(月) 03:57:170032デフォルトの名無しさん
2007/09/17(月) 04:54:45とりあえずランダムに求めておいて重複していればまた求める
一応はこれで十分だろう
0033デフォルトの名無しさん
2007/09/17(月) 05:03:32カードを配列に入れて先頭から順にランダムに選んだ要素とスワップしてシャッフル。
あとは配列の先頭から使いたいだけ使えばいい。
0034デフォルトの名無しさん
2007/09/17(月) 05:35:31その場をきる。先にカードがなくなったほうが勝ち。これを作ろうとする猛者はいる?
0035デフォルトの名無しさん
2007/09/17(月) 05:40:05CUIで大富豪作ればいいのか?
0036デフォルトの名無しさん
2007/09/17(月) 06:13:44〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <<<1は最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
0037デフォルトの名無しさん
2007/09/17(月) 07:04:340038デフォルトの名無しさん
2007/09/17(月) 07:18:050039デフォルトの名無しさん
2007/09/17(月) 12:18:270040デフォルトの名無しさん
2007/09/17(月) 12:42:540041デフォルトの名無しさん
2007/09/17(月) 12:58:28つーか大富豪ってローカルルールが多すぎてどれが標準的かよくわからん
0042デフォルトの名無しさん
2007/09/17(月) 13:00:070043デフォルトの名無しさん
2007/09/17(月) 13:02:35がんばれ
0044デフォルトの名無しさん
2007/09/17(月) 13:17:180045デフォルトの名無しさん
2007/09/17(月) 13:20:16このスレで応募してみるとか
0046デフォルトの名無しさん
2007/09/17(月) 13:20:530047デフォルトの名無しさん
2007/09/17(月) 13:35:220048まずはここから
2007/09/17(月) 13:36:10*rank)[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int card[52]; /* 52=4*13 */
でよい?
0049いつもここから
2007/09/17(月) 13:40:56あと、表示は
[SA][H10][DJ][CQ]...
- 00 -- 01 -- 02 -- 03 -...
入力は
04,12,...
でおk?
0050デフォルトの名無しさん
2007/09/17(月) 14:06:190051デフォルトの名無しさん
2007/09/17(月) 14:36:11"3","4","5","6","7","8","9","10","J","Q","K","A","2"
の順がいいと思われ
0052デフォルトの名無しさん
2007/09/17(月) 14:45:010053デフォルトの名無しさん
2007/09/17(月) 14:49:4153bit 目が立っていたらジョーカーを持っている事にすればソート不要。
0054デフォルトの名無しさん
2007/09/17(月) 15:00:180055デフォルトの名無しさん
2007/09/17(月) 15:13:12ハート 1
ダイヤ 2
クラブ 3
A 0
2 1
:
J 10
Q 11
K 12
スペードA 0
スペード2 1
:
スペードK 12
ハートA 13
:
ハートK 25
ダイヤA 26
:
クラブK 51
0056つまり
2007/09/17(月) 15:24:02商 0〜3
余 0〜12
を使う
・表示
・ソート(大小判定) ...は 0〜12 のままじゃダメだなw
0057デフォルトの名無しさん
2007/09/17(月) 15:24:11A〜Kで13bit
ジョーカーで1bit
0058デフォルトの名無しさん
2007/09/17(月) 15:26:430059デフォルトの名無しさん
2007/09/17(月) 15:30:160060デフォルトの名無しさん
2007/09/17(月) 15:35:570061デフォルトの名無しさん
2007/09/17(月) 15:39:35七行プログラミング part5
http://pc11.2ch.net/test/read.cgi/tech/1142467359/
0062とりあえず
2007/09/17(月) 17:03:17#include <stdlib.h>
#include <time.h>
char *suit[]={"S","H","D","C"},
*rank[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int card[52]; /* 52=4*13 */
int hand[52][52], numOfHand[52];
void shuffle(void){ int i;
for(i=0; i<52; ++i){ int pos=(i+1.0) * rand() / (RAND_MAX + 1.0);
card[i]=card[pos]; card[pos]=i;
}
}
void cardDisp(int num, int *card){ int i;
for(i=0; i<num; ++i) printf("[%s%s]", suit[card[i]/13], rank[card[i]%13]);
putchar('\n');
}
void deal(int numOfPlayer){ int i=0, p, n=0;
for(n=0;;++n)
for(p=0; p<numOfPlayer; ++p){
numOfHand[p]=n+1; hand[p][n]=card[i++]; if(i>52) return;
}
}
int main(void){
srand(time(NULL));
shuffle();
deal(2);
cardDisp(numOfHand[0], hand[0]);
cardDisp(numOfHand[1], hand[1]);
return 0;
}
配るまで
0063デフォルトの名無しさん
2007/09/17(月) 17:40:320064デフォルトの名無しさん
2007/09/17(月) 18:46:150065デフォルトの名無しさん
2007/09/17(月) 19:00:240066デフォルトの名無しさん
2007/09/17(月) 19:30:54もっと高精度なの使う?
0067デフォルトの名無しさん
2007/09/17(月) 19:34:080068デフォルトの名無しさん
2007/09/17(月) 20:45:51ゲーム程度なら要らないかと
ゲーム向きの乱数生成法としては
時計orタイマーをキーにするって方法もある
ユーザ入力のタイミング次第で結果が変わるので、お手軽かつ偏りが少ない
0069デフォルトの名無しさん
2007/09/17(月) 21:18:240070デフォルトの名無しさん
2007/09/17(月) 21:32:090071デフォルトの名無しさん
2007/09/17(月) 21:50:380072デフォルトの名無しさん
2007/09/17(月) 22:30:23これてどういうこと?
0073デフォルトの名無しさん
2007/09/17(月) 23:01:51だっけ?面倒だろうけどコメントつけていってw俺にもサパーリ
0074デフォルトの名無しさん
2007/09/17(月) 23:14:500075デフォルトの名無しさん
2007/09/17(月) 23:28:100076デフォルトの名無しさん
2007/09/17(月) 23:28:51pos = rand();
// pos は 0 以上 1 未満の実数 (int pos ならキャストされて整数に)
pos = rand() / (RAND_MAX + 1.0);
// pos は 0 以上 N 未満の実数 (int pos ならキャストされて整数に)
pos = rand() / (RAND_MAX + 1.0) * N;
// pos は K 以上 N 以下の整数 (俺が正しいと思ってる書き方)
pos = K + (int)( rand() / (RAND_MAX + 1.0) * (N+1-K) );
int pos=(i+1.0) * rand() / (RAND_MAX + 1.0);
除算 "/" 演算は、被除数か除数の一方が float でもないと小数値を切り捨てる。
これは、(RAND_MAX + 1.0) で解消される。
(i+1.0) * rand() の 1.0 は 1 でもいいが、
rand()の値によっては、乗算をした瞬間にオーバーフローする可能性がある。
上に書いたように乗算を後からやれば問題ない。
0077デフォルトの名無しさん
2007/09/17(月) 23:40:340078デフォルトの名無しさん
2007/09/17(月) 23:53:53そういうこと。
整数なのでi+1未満ってことは、i以下ってこと。
0079デフォルトの名無しさん
2007/09/18(火) 03:10:040080デフォルトの名無しさん
2007/09/18(火) 06:24:49パス?=真
番号の小さいカードから順に見て{
場札より大きいなら{
カードを場に出す
パス?=偽
}
}
0081デフォルトの名無しさん
2007/09/18(火) 06:46:030082デフォルトの名無しさん
2007/09/18(火) 07:00:18出したらそこでreturnすればフラグは要らないな
そうすれば、ループ回りきった=出せない、なのだから
0083デフォルトの名無しさん
2007/09/18(火) 07:55:23何も考えずに1〜Kの順で配列にするから、順番入れ替えの必要があるわけで
0084デフォルトの名無しさん
2007/09/18(火) 08:04:170085デフォルトの名無しさん
2007/09/18(火) 08:14:400086デフォルトの名無しさん
2007/09/18(火) 08:16:310087デフォルトの名無しさん
2007/09/18(火) 08:17:180088デフォルトの名無しさん
2007/09/18(火) 09:15:340089デフォルトの名無しさん
2007/09/18(火) 13:31:460090デフォルトの名無しさん
2007/09/18(火) 15:03:590091デフォルトの名無しさん
2007/09/18(火) 15:32:420092デフォルトの名無しさん
2007/09/18(火) 16:34:070093デフォルトの名無しさん
2007/09/18(火) 18:46:04#Player 1
Spade : 1 2 5
Heart : 1 2 3 4 6 9 11 13
Club : 1 3 4 6 7 8 9 10 11
Dia : 1 4 5 9 12 13
#Player 2
Spade : 3 4 6 7 8 9 10 11 12 13
Heart : 5 7 8 10 12
Club : 2 5 12 13
Dia : 2 3 6 7 8 10 11
#Player 1
Spade : 1 2 -- -- 5 -- -- -- -- -- -- -- --
Heart : 1 2 3 4 -- 6 -- -- 9 -- 11 -- 13
Club : 1 -- 3 4 -- 6 7 8 9 10 11 -- --
Dia : 1 -- -- 4 5 -- -- -- 9 -- -- 12 13
#Player 2
Spade : -- -- 3 4 -- 6 7 8 9 10 11 12 13
Heart : -- -- -- -- 5 -- 7 8 -- 10 -- 12 --
Club : -- 2 -- -- 5 -- -- -- -- -- -- 12 13
Dia : -- 2 3 -- -- 6 7 8 -- 10 11 -- --
#Player1 : S(1 2 5) H(1 2 3 4 6 9 11 13) C(1 3 4 6 7 8 9 10 11) D(1 4 5 9 12 13)
#Player2 : S(3 4 6 7 8 9 10 11 12 13) H(5 7 8 10 12) C(2 5 12 13) D(2 3 6 7 8 10 11)
0094クソゲー
2007/09/18(火) 20:55:41ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4935.zip
0095デフォルトの名無しさん
2007/09/18(火) 21:02:36CPUはこっちが出したスートしかださないのか
0096デフォルトの名無しさん
2007/09/18(火) 21:52:100097デフォルトの名無しさん
2007/09/18(火) 23:01:260098デフォルトの名無しさん
2007/09/18(火) 23:02:420099デフォルトの名無しさん
2007/09/18(火) 23:16:130100デフォルトの名無しさん
2007/09/18(火) 23:36:14やつも貼り付けると思うけど教えてくれ
0101デフォルトの名無しさん
2007/09/18(火) 23:42:000102デフォルトの名無しさん
2007/09/19(水) 00:14:080103デフォルトの名無しさん
2007/09/19(水) 01:11:26突っ込みどころ満載とはおもいますがお願いします。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4940.txt
0104とりあえず
2007/09/19(水) 01:37:06static int getCmpRank(int *p){ int r=*p%13; return (r<2)?r+13:r; }
static int cmp(const void *p1, const void *p2){ int r1=getCmpRank((int *)p1), r2=getCmpRank((int *)p2);
if(r1!=r2) return (r1<r2)?-1:1;
else{ int s1=*((int *)p1)/13, s2=*((int *)p2)/13;
if(s1!=s2) return (s1<s2)?-1:1;
}
return 0;
}
#define NumOfPlayer 5
void dispAll(void){int i;
printf("%4c",' '); for(i=0; i<52/NumOfPlayer+1; ++i) printf(" -%2d- ", i); putchar('\n');
for(i=0; i<NumOfPlayer; ++i){
printf("#%02d:",i+1);
qsort(hand[i], numOfHand[i], sizeof(int *), cmp); cardDisp(numOfHand[i], hand[i]);
}
}
int main(void){
srand(time(NULL));
shuffle();
deal(NumOfPlayer);
dispAll();
return 0;
}
0106デフォルトの名無しさん
2007/09/19(水) 01:40:060107103
2007/09/19(水) 01:43:590108デフォルトの名無しさん
2007/09/19(水) 01:45:39'関数'化だな、まずは。
0109デフォルトの名無しさん
2007/09/19(水) 01:46:50俺の経験によると、お前は伸びるタイプだな
がんばれ
0110デフォルトの名無しさん
2007/09/19(水) 01:47:31int s[13],h[13],c[13],d[13];
だろ?伸びる兆しが見えん。
0111デフォルトの名無しさん
2007/09/19(水) 01:49:10まだ、うまいへたを論じるレベルじゃない
0112デフォルトの名無しさん
2007/09/19(水) 01:50:59まてまて
それを2次元配列にすれば→ int card[4][13];
そんなに悪くはないぞ
0113デフォルトの名無しさん
2007/09/19(水) 01:52:060114デフォルトの名無しさん
2007/09/19(水) 01:53:100115103
2007/09/19(水) 02:08:03関数化にポインタに二次元配列ですか・・・
まだカードを配るところにすらいってないのに・・・
お風呂上りに麦茶一気飲みしたらお腹が痛くなってきたので寝ます。
また来ますのでそのときはアドバイスよろしくお願いします
0116デフォルトの名無しさん
2007/09/19(水) 02:11:260117デフォルトの名無しさん
2007/09/19(水) 02:15:150118デフォルトの名無しさん
2007/09/19(水) 02:22:27ちなみに、スーツの強弱は ♠ ♥ ♦ ♣ の順になっているんで
1から13までをスペードといった形で割り当てている。
0119デフォルトの名無しさん
2007/09/19(水) 02:24:230120デフォルトの名無しさん
2007/09/19(水) 02:27:050121デフォルトの名無しさん
2007/09/19(水) 02:34:24大富豪にスートの強弱なんか無えよ
0122デフォルトの名無しさん
2007/09/19(水) 02:38:390123デフォルトの名無しさん
2007/09/19(水) 03:14:070124デフォルトの名無しさん
2007/09/19(水) 04:30:31この程度なら「必要」ではないよ。使えた方が「効率的」だったり「楽」なこともあるけど。
0125デフォルトの名無しさん
2007/09/19(水) 05:28:52整数にキャストするなら実数に変換する意味なくない?
普通に剰余を求めればいいのでは。
0126デフォルトの名無しさん
2007/09/19(水) 05:40:08rand()の実装を考えると、普通に剰余するだけでは精度が悪い。
精度を上げるために上位ビットの値を使ってる。
0127デフォルトの名無しさん
2007/09/19(水) 06:12:55やる気が失せる
0128デフォルトの名無しさん
2007/09/19(水) 06:36:14構造体なんか使ってねえや
0129デフォルトの名無しさん
2007/09/19(水) 07:00:22カードの表示や比較をする度に除算や余算をしなくていいし。
いまどきの環境なら容量に気をつかう必要があるわけじゃないしね。
0130デフォルトの名無しさん
2007/09/19(水) 09:13:32CARD_NUM number;
CARD_SUIT suit;
FUGO_CARD_RANK rank;
LPCSTR str;
};
0131デフォルトの名無しさん
2007/09/19(水) 09:23:020132デフォルトの名無しさん
2007/09/19(水) 09:58:330133デフォルトの名無しさん
2007/09/19(水) 10:13:200134デフォルトの名無しさん
2007/09/19(水) 10:44:070135デフォルトの名無しさん
2007/09/19(水) 18:00:20特に大富豪は数字が一番低いのがカードの強さが一番低いになってないのがぶちきれる
0136デフォルトの名無しさん
2007/09/19(水) 18:02:38同時に複数枚数出す事が出来たり、
面倒だ
0137デフォルトの名無しさん
2007/09/19(水) 18:25:470138103
2007/09/19(水) 19:47:060139デフォルトの名無しさん
2007/09/19(水) 19:53:04日本語で
0140103
2007/09/19(水) 19:56:04二人なので26枚ずつに
0141デフォルトの名無しさん
2007/09/19(水) 19:59:11とりあえず、C言語の本を一冊やり切ってからまた来い
0142デフォルトの名無しさん
2007/09/19(水) 20:01:590143103
2007/09/19(水) 20:11:190144デフォルトの名無しさん
2007/09/19(水) 20:17:280145デフォルトの名無しさん
2007/09/19(水) 20:28:270146デフォルトの名無しさん
2007/09/19(水) 20:34:080147デフォルトの名無しさん
2007/09/19(水) 20:39:23學而不思則罔、思而不學則殆つってな
工夫して勉強しての繰り返しだ
0148デフォルトの名無しさん
2007/09/19(水) 20:48:41まず何を作るべきか、手段や手法を理解した方が良い。
この場合、トランプゲームにおいて、カードの山を作るということを
イメージして、それをどのように実装するか?をまず考える。
スーツごとに分けたものをシャッフルした山を用意してどないしましょ?
0149デフォルトの名無しさん
2007/09/19(水) 20:49:26使うのは・・・まぁ頭のいい人に聞いて
0150デフォルトの名無しさん
2007/09/19(水) 20:53:150151デフォルトの名無しさん
2007/09/19(水) 20:58:31本質的に難しいことなので、理解するのにちょっと時間かかってもしょうがない
0152デフォルトの名無しさん
2007/09/19(水) 21:16:460153デフォルトの名無しさん
2007/09/19(水) 21:36:250154デフォルトの名無しさん
2007/09/19(水) 22:11:14なんかよくわかんないけど130は基本的にダメPO。
宿題スレの乗りでおいてみる¨
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <memory.h>
int S=0,H=13,C=26,D=39,J=52,N=4,M=54;
char* SUIT[5]={"S","H","C","D"};
void swap(int *a,int *b) {int t=*a;*a=*b;*b=t;}
void initDeck(int *d){int i;for(i=0;i<M;i++)d[i]=i;}
void initHand(int *h){memset(h,-1,sizeof(int)*N*M);}
void shuffle(int* d){int i,j;srand((unsigned)time(0));
for(i=0;i<M;i++){j=rand()%M;swap(d+i,d+j);}}
void distribute(int *d,int *h){int i;
for(i=0;i<M;i++)swap(h+((i%N)*M+(i/N)),d+i);}
void show(int *h){int i,j,t;for(i=0;i<N;i++){
printf("PLAYER%d: ",i);for(j=0;(t=h[i*M+j])>=0;j++){
if(t<J)printf("%s-%d ",SUIT[t/13],t%13+1);
else printf("JOKE ");}puts("");}}
void game(){int d[M];int h[N*M];initDeck(d);initHand(h);
shuffle(d);distribute(d,h);show(h);}
int main() {game();system("PAUSE");return 0;}
0155デフォルトの名無しさん
2007/09/19(水) 22:27:02どこら辺がダメぽか書けよ…
つーかお前のそのコードは読めんぞ。
7行スレとかのノリのつもり?
0156デフォルトの名無しさん
2007/09/19(水) 22:35:34どうみてもダメなのはお前
0158デフォルトの名無しさん
2007/09/19(水) 22:38:580159デフォルトの名無しさん
2007/09/19(水) 22:40:090160デフォルトの名無しさん
2007/09/19(水) 22:41:120161デフォルトの名無しさん
2007/09/19(水) 22:50:070162デフォルトの名無しさん
2007/09/20(木) 00:38:25できる奴がやってもしょうがねえって
よって、おまえやれや。教えてやっからよ
0163デフォルトの名無しさん
2007/09/20(木) 01:56:08カードをシャッフル
プレイヤーにカードを配る
プレイヤー、対戦相手は出すカードを選択する
ゲームのルールに則って出されたカードを処理する
ゲームが終了する条件が満たされたら結果を表示
みたいな。コンピュータがどのように出すカードを選択するか
その辺りは適当に独自でライブラリを作って対処。
0164デフォルトの名無しさん
2007/09/20(木) 02:03:31おおまかすぎつか粒度がおかしいだろ
とりあえずプレイヤーとかカードとか手札とかのデータ構造考えてみ?
0165デフォルトの名無しさん
2007/09/20(木) 02:11:39口先だけで何も提案しないお前が言うなボケクズw
お前みたいな口先だけでデータの構造考えてみ?とか
他人任せなくせして自分が何も考えてないのがバレバレ。
それはただの処理の流れであって、具体的な処理についてじゃないぞw
お前、プログラムを作るとき、先にソースを書いて後で分からなくなるタイプだろ?w
普通、処理の手順や流れを決めてから部分部分を作って、後でおのおのを組み合わせるなんて
当たり前だぞw
0166デフォルトの名無しさん
2007/09/20(木) 02:12:14>>163
おおまかすぎつか粒度がおかしいだろ
とりあえずプレイヤーとかカードとか手札とかのデータ構造考えてみ?
お前が おかしいだろ おかしいだろ おかしいだろ おかしいだろ おかしいだろ おかしいだろ
手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ?
手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ?
だからまだそういう段階の話じゃねーってバーかw
0167デフォルトの名無しさん
2007/09/20(木) 02:12:53ワラタw こいつ何が言いたいんだ?っつかなんだこいつ?リーダーでもないくせに。
そこまで言うならお前がその手札とかのデータ構造考えてみ?w
0168デフォルトの名無しさん
2007/09/20(木) 02:14:15>>161
できる奴がやってもしょうがねえって
よって、おまえやれや。教えてやっからよ
↑あとこいつも。アホだろ。お前がやれよ、まるで自分は出来る奴みたいな
結果を出してもいないくせに、出来ない奴を目の前にしてやってもない
自分の方が出来るとか思いたいんだろw
0169デフォルトの名無しさん
2007/09/20(木) 02:18:12どういう処理をするモジュールが必要になるかの前に考えるだろ。
データ構造って、何が言いたいんだ?それを言うならお前がまず
それについて述べろ。>>164
0170デフォルトの名無しさん
2007/09/20(木) 02:18:140171デフォルトの名無しさん
2007/09/20(木) 02:19:25そうして分担すればいいじゃないか。。。
0172デフォルトの名無しさん
2007/09/20(木) 02:20:45気に入らないレスをスルーできないなら
最初から書き込まなきゃよくね?w
0173デフォルトの名無しさん
2007/09/20(木) 02:25:39たかだか1〜52(あるいはジョーカーを入れても53?)の数字を扱う程度でデータ構造とか
あまり重要ではないな。ゲームのルールがどうかであって、それに応じたプログラムの
処理手順や全体の構造をまず先に考えるだろ。データ構造が出来ていればなんとかなるのか?
さすがに痛すぎだわ、データ構造を考えてみ?さんw
0174デフォルトの名無しさん
2007/09/20(木) 02:27:49荒らすのはカンベン
0175デフォルトの名無しさん
2007/09/20(木) 02:35:27りゅうど りふ― 1 【粒度】
粉状物体の粒子の大きさの度合。一般に、粒子の平均直径で示される。
164 名前:デフォルトの名無しさん 投稿日:2007/09/20(木) 02:03:31
>>163
おおまかすぎつか粒度がおかしいだろ
これは何が言いたかったんだろうか?最近覚えた言葉をなんとなく使っただけの
初心者です、ありがとうございました。
0176デフォルトの名無しさん
2007/09/20(木) 02:43:230177デフォルトの名無しさん
2007/09/20(木) 02:43:510178デフォルトの名無しさん
2007/09/20(木) 05:43:430179デフォルトの名無しさん
2007/09/20(木) 05:56:58てっきりmultiだと思ってコピペしてたらmultiと打って弾かれたのでおかしいとは思ったんだ。
0180デフォルトの名無しさん
2007/09/20(木) 18:11:02とりあえず七並べ作ろうぜ?
0181デフォルトの名無しさん
2007/09/20(木) 18:13:45勧めていくかの項目くらい作っておくだろ。それに応じて必要な部分を作っていくなんて
プログラミングをやっていれば当たり前だと思うが。
まさか、mainの中に全部詰め込んでしまうタイプ?
0182デフォルトの名無しさん
2007/09/20(木) 18:40:410183デフォルトの名無しさん
2007/09/20(木) 18:51:460184デフォルトの名無しさん
2007/09/20(木) 19:24:49やだぷー、俺は今から七ならべを作るからw
0186デフォルトの名無しさん
2007/09/20(木) 19:40:15俺が今からjavaで作ってやるよ
0187デフォルトの名無しさん
2007/09/20(木) 19:41:13スレタイ読んでくれい。「C言語で」な。
0188デフォルトの名無しさん
2007/09/20(木) 19:46:52対戦相手のコンピュータがどのようにカードを場に出すかってところでつまづく。
0189デフォルトの名無しさん
2007/09/20(木) 19:48:56その実装のままゲームとして出してる例もあることだし。
0190デフォルトの名無しさん
2007/09/20(木) 19:49:030191デフォルトの名無しさん
2007/09/20(木) 20:09:42甘いな。
最初からwikipediaに載ってるローカルルールを全て実装可能なように設計するのだ。
0192デフォルトの名無しさん
2007/09/20(木) 20:11:220193デフォルトの名無しさん
2007/09/20(木) 20:12:360194192
2007/09/20(木) 20:13:37これからはきをつけますので
0195デフォルトの名無しさん
2007/09/20(木) 20:15:390196デフォルトの名無しさん
2007/09/20(木) 20:17:370197デフォルトの名無しさん
2007/09/20(木) 20:18:290198デフォルトの名無しさん
2007/09/20(木) 20:26:15いや、ランダムったって、ゲームのルールに応じて出せないカードじゃ仕方がないし
出せる中からなんて探しててもそれはそれで面倒だし・・・
0199デフォルトの名無しさん
2007/09/20(木) 20:28:390200デフォルトの名無しさん
2007/09/20(木) 20:31:02http://www.tnlab.ice.uec.ac.jp/daihinmin/2007/
これに従ってAI作って競う方が面白そう
0201デフォルトの名無しさん
2007/09/20(木) 20:35:52君はそれをやればいい
0202デフォルトの名無しさん
2007/09/20(木) 20:37:50SDKのコンパイルの段階で躓く奴が多そうだ
0203デフォルトの名無しさん
2007/09/20(木) 20:57:300204デフォルトの名無しさん
2007/09/20(木) 23:16:300205デフォルトの名無しさん
2007/09/21(金) 00:48:400206デフォルトの名無しさん
2007/09/21(金) 00:55:580207デフォルトの名無しさん
2007/09/21(金) 01:06:310208デフォルトの名無しさん
2007/09/21(金) 01:08:150209デフォルトの名無しさん
2007/09/21(金) 01:24:55Win32用の実行プログラムだけをうpするわ。
0210とりあえず
2007/09/21(金) 01:31:27int field[52],numOfSet,passCount;
int sequence(int *chkHand, int len){ int i=0;
if(len>=3) for(i=1; i<len; ++i) if(getCmpRank(chkHand+i)!=getCmpRank(chkHand+i-1)+1 || *(chkHand+i)/13!=*(chkHand+i-1)/13) break;
return (i==len)?getCmpRank(&chkHand[len-1]):0;
}
int pair(int *chkHand, int len){ int i;
for(i=1; i<len; ++i) if(*(chkHand+i)%13!=*(chkHand+i-1)%13) break;
return (i==len)?len*10+*(chkHand+len-1)%13:0;
}
int higher(int *nowHand, int len){ int stat;
if(numOfSet==0 && (len<=1 || pair(nowHand,len) || sequence(nowHand,len))) return 1;
else{
if(0<(stat=sequence(field,numOfSet)) && stat<sequence(nowHand,len)) return 1;
if(0<(stat=pair(field,numOfSet)) && stat<pair(nowHand,len)) return 1;
}
return 0;
}
int putCard(int player, int *list, int len){ int i, nowHand[52];
if(len<=numOfHand[player]){
for(i=0; i<len; ++i) nowHand[i]=hand[player][*(list+i)]; qsort(nowHand, len, sizeof(int *), cmp);
if(higher(nowHand, len)){
for(i=0; i<len; ++i){ hand[player][*(list+i)]=hand[player][--numOfHand[player]]; field[i]=nowHand[i]; }
return (numOfSet = len);
}
}
return 0;
}
:
numOfSet=passCount=0;
if(putCard(i, list, len)==0) ++passCount; else passCount=0;
0211デフォルトの名無しさん
2007/09/21(金) 01:58:310212デフォルトの名無しさん
2007/09/21(金) 02:02:150213デフォルトの名無しさん
2007/09/21(金) 03:17:55構造体を作って、それを双方向リストにでもして、抜いたカードの部分を
リストを削除するように消してといった感じにして、手持ちのカードリストが
ヌルポになったら手持ちがなくなったという感じにするとか考えてみたけど
やっぱやーめた。
0214127
2007/09/21(金) 04:00:02*** Card Simulation ***
#InCase
S-A S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-9 S10 S-J S-Q S-K H-A H-2 H-3 H-4 H-5
H-6 H-7 H-8 H-9 H10 H-J H-Q H-K D-A D-2 D-3 D-4 D-5 D-6 D-7 D-8 D-9 D10
D-J D-Q D-K C-A C-2 C-3 C-4 C-5 C-6 C-7 C-8 C-9 C10 C-J C-Q C-K (J) (J)
*** Multi Millionaire Begin ***
<Shuffle>
#Shuffled(HinduShuffle X10 / RifleShuffle X1 / HinduShuffle X10)
S-A D-2 S-2 D-3 S-3 D-4 S-4 D-5 S-5 D-6 S-6 D-7 S-7 D-8 S-8 D-9 S-9 D10
S10 D-J S-J D-Q S-Q D-K S-K C-A H-A C-2 H-2 C-3 H-3 C-4 H-4 C-5 H-5 C-6
C-7 H-6 C-8 H-7 C-9 H-8 C10 H-9 C-J H10 C-Q H-J C-K H-Q (J) H-K (J) D-A
<Deal>
#Player01
H-3 D-3 S-4 C-5 D-6 S-7 H-7 C-7 D-9 S10 H10 C10 D-Q S-K H-K C-K S-A C-2
#Player02
C-3 H-4 D-4 S-5 C-6 D-7 S-8 H-8 C-8 D10 S-J H-J C-J D-K H-A D-A S-2 (J)
#Player03
S-3 C-4 H-5 D-5 S-6 H-6 D-8 S-9 H-9 C-9 D-J S-Q H-Q C-Q C-A H-2 D-2 (J)
0215デフォルトの名無しさん
2007/09/21(金) 05:25:32というか、実装したコードを書いてもらわんとさっぱり・・・
0216デフォルトの名無しさん
2007/09/21(金) 22:16:490217デフォルトの名無しさん
2007/09/21(金) 22:20:42何か意欲を維持できるものができたのなら話は別
0218デフォルトの名無しさん
2007/09/21(金) 23:38:50革命のルールなんだけどさ、たとえば3人でゲームをしている状況で、
A氏が 6 を 4枚、B氏が 9 を4枚、C氏が Q を 4枚持っている。
B 氏から始まる場になったので、B氏は 9 を 4枚出した。
そしたら、この場はどうなるの?
1. そのまま流れて、次のB氏の場から革命の場になる。
2. B氏が 9 を 4枚出した次点で革命が発動するので、A氏が 6 を 4枚出せば切れる。
さらにこの場合だと、そのあとC氏が Q を 4枚出せば切れる。
3. B氏が 9 を 4枚出した場はまだ革命の場ではないから、C氏が Q を 4枚出せば切れる。
この場合、次のC氏の場は革命の状態?それとも通常に戻る?
4. その他
さて、どれが主流?
オレは2でやってたけど。熊本で。
0219210
2007/09/21(金) 23:41:01複数枚カードの組 or 3枚以上の同じスーツのシーケンス は出せる、ルール
当然、場札より大きくないとダメ(3,4,...J,Q,K,A,2の順)
>212
「うpロダ」って何?
0220デフォルトの名無しさん
2007/09/21(金) 23:42:31次はパスのルールなんだけど、
場で一度パスしたらその場はもう参加できないの?
また3人でやっているとして、
A氏が4、B氏が7ときて、C氏はQがあるけど、出したくないからパスした。
そしたらA氏がJで切った。B氏はパスした。
この状況で、C氏はQ出せる?それとも強制パスでA氏の場になる?
0221デフォルトの名無しさん
2007/09/21(金) 23:43:41もれも 2. だな。埼玉、千葉で。
0222デフォルトの名無しさん
2007/09/21(金) 23:44:45>>220 パスした人はその場が切れるまで参加できないってしてた
おそらく地方とかでルール変わるかもしれないけど、公式ルールってないのかな
0223デフォルトの名無しさん
2007/09/21(金) 23:45:37お、2が増えた。
母集団が増えることはあまり期待していないので、
もう2人くらいいるなら2で実装してみようかな。
一番簡単だし。
0224221
2007/09/21(金) 23:46:46C氏はQ出せる。
場に出した人"以外の他の人全て"がパスした時だけ流れる、ルール
だったな
0225221
2007/09/21(金) 23:49:07誰かが出したらその時点でカウントがリセットになって、それ以降からパスのカウントが始まる
って感じ
言葉にするとよく分からないな...
0226デフォルトの名無しさん
2007/09/21(金) 23:51:46分かるよ。自分が出したカードを自分が切ることになったら流れるってことでしょ。
でもやっぱり>>222タイプもあるんだよねぇ。
いや、CPUの思考ルーチンに差を出せないかと思ってさ。
昔でいうパックマンのモンスターみたいに。
とりあえず手札を減らしたい派、Aや2を温存する派、革命できるときは何より革命を狙う派…とか。
もちょっと考えてみる。
0227デフォルトの名無しさん
2007/09/22(土) 01:24:42エラー直してコンパイルしたら、手札のあまりの見にくさに吹いた
二人対戦だと一人のカード多いよ('A`)
おまけに複数枚出しを忘れてたorz
もういいや寝よ
俺みたいな初心者じゃなくてちゃんとした人が結構作ってるみたいだし
0228デフォルトの名無しさん
2007/09/22(土) 01:36:07スレタイに「C言語で」とはっきり断ってあるからだ。
これがなければどれだけ簡単だっただろうか。
0229デフォルトの名無しさん
2007/09/22(土) 01:57:111はCで作りたいといっているだけで、
ほかのやつは他の言語を使ったって一向に構わないと俺は思うぞ。
0230デフォルトの名無しさん
2007/09/22(土) 02:05:290231デフォルトの名無しさん
2007/09/22(土) 03:39:440232デフォルトの名無しさん
2007/09/22(土) 03:45:16君は本当にC言語もスレタイも理解できてないのかね?
ある程度の実装がされている開発環境なら言語を選ばずとも作れるんだよ。
このスレは”C言語で”だからね。かまわないって言い出すとキリがなくなるだろ。
東京から京都へ東海道を歩いて行くというイベントで
移動して目的地に到達すりゃ良いから鉄道でも自動車でも
一向に構わないなんて言ったら歩いていくという目的が無視されるでしょうに。
0233デフォルトの名無しさん
2007/09/22(土) 03:47:31歩くも良し、走るも良し、屁理屈抜きで足でこぐ自転車でも良し
という条件ならおkとも言えよう。歩くって言ったら歩く。
0234デフォルトの名無しさん
2007/09/22(土) 04:03:42おおらかさが無いとつまらん
0235デフォルトの名無しさん
2007/09/22(土) 04:11:08ふとスレ読み返したら>>104を見てソート関数があらかじめ用意されていたことを知ったorz
なんか負けた気分
配列でやるのはやっぱりきついかな?
出したカードの分、穴が空いちゃうし。
0236デフォルトの名無しさん
2007/09/22(土) 04:13:470237デフォルトの名無しさん
2007/09/22(土) 04:32:48やはり双か単方向リストでリストを削除するかのように実装すべきか、それが問題だ。
0238235
2007/09/22(土) 04:44:37いやあ、何かスマートじゃない気がして
いっそ詰めないで、カード無いとこには-1とか入れて、画面表示の際のループで残り枚数カウントするとかも考えたんだけど
無駄なループだ
>>237
やっぱ単か双のリストが良いかねえ
まあプログラミング初心者としては、それも面白そうではあるんだけど
0239デフォルトの名無しさん
2007/09/22(土) 08:16:51>>232
君は本当にスレタイを理解できてないのかね?
このスレは”トランプゲームを作りたい”だからね。かまわないって言い出すとキリがなくなるだろ。
0240デフォルトの名無しさん
2007/09/22(土) 09:30:590241デフォルトの名無しさん
2007/09/22(土) 13:54:470242デフォルトの名無しさん
2007/09/22(土) 14:00:44Javaで作ろうか
0243デフォルトの名無しさん
2007/09/22(土) 14:09:52できないよりマシ
0244デフォルトの名無しさん
2007/09/22(土) 17:15:480245デフォルトの名無しさん
2007/09/22(土) 17:21:510246デフォルトの名無しさん
2007/09/22(土) 17:43:13スレタイにこだわりだしたら、「ゲーム」と入ってる時点でLR違反だってことを>>239は皮肉ってるつもりだろう
俺はCだけにこだわる必要はないと思うし、
わざわざ移転する必要もないと思うが
0247デフォルトの名無しさん
2007/09/22(土) 17:49:45少しでもゲームできる可能性を増やしたい乞食だろ。
0248デフォルトの名無しさん
2007/09/22(土) 17:58:380249デフォルトの名無しさん
2007/09/22(土) 18:00:49必要があるないじゃないんだよ、スレタイは C言語で って書かれてあるだろ。
日本語が読めないなら祖国に帰れよ
0250デフォルトの名無しさん
2007/09/22(土) 18:01:57お前みたいな奴ってトランプゲームを作ることだけに頭がいっているんだろうけど
C言語の宿題や質問スレでJavaやその他の言語の質問してもスルーされるだけだぞ
0251デフォルトの名無しさん
2007/09/22(土) 18:03:26ゲームやりたいだけならヤフーとかハンゲにでも行くさ
0252デフォルトの名無しさん
2007/09/22(土) 18:04:19スレタイは ゲーム って書かれてあるだろ。
> ゲーム関係の話題はゲーム製作板へどうぞ。
日本語が読めないなら祖国に帰れよ
0253デフォルトの名無しさん
2007/09/22(土) 18:06:520254デフォルトの名無しさん
2007/09/22(土) 18:08:09それなんてダブスタ?
0255デフォルトの名無しさん
2007/09/22(土) 18:12:38性格ねじまがってるのかな??
0256デフォルトの名無しさん
2007/09/22(土) 18:13:300257デフォルトの名無しさん
2007/09/22(土) 18:13:43ス レ タ イ 読 め
C言語でトランプゲームを作りたい
http://pc11.2ch.net/test/read.cgi/tech/1189892773/
スレ違いの奴らは出ていって結構
0258デフォルトの名無しさん
2007/09/22(土) 18:14:490259デフォルトの名無しさん
2007/09/22(土) 18:16:520260デフォルトの名無しさん
2007/09/22(土) 18:18:21って言ったらキリがないぞ。ここに立ってる以上ここを有効活用するべき
0261デフォルトの名無しさん
2007/09/22(土) 18:18:250262デフォルトの名無しさん
2007/09/22(土) 18:21:570263デフォルトの名無しさん
2007/09/22(土) 18:47:42026435
2007/09/22(土) 18:58:33通常ルール部分の判定処理(出せるか出せないか)
AI(簡単なものなら、上の判定を使って適当にカードを選ぶ)
特殊ルール(8切りなど)の実装
がコーディングできれば完成です。
0265デフォルトの名無しさん
2007/09/22(土) 18:58:35正直言って今ここのレベルは高くないと思ってるけど
作る人が居るなら成長できるよう応援する
0266デフォルトの名無しさん
2007/09/22(土) 19:03:030267デフォルトの名無しさん
2007/09/22(土) 19:23:431.
[1:H4][2:D6][3:S6][4:C9]
番号を入力してください>1 //一枚出し
番号を入力してください>23 //二枚出し?
2.
手札/[H4][D6][S6][C9]
Single/[1:H4][2:D6][3:S6][4:C9]
Double/[5:D6,S6]
番号を入力してください>4 //二枚出し
(出せるカードのみリスト)
3.
[H4][D6][S6][C9]
出したいカードを入力してください>H4 //一枚出し
出したいカードを入力してください>DS6 //二枚出し
0268デフォルトの名無しさん
2007/09/22(土) 19:24:580269デフォルトの名無しさん
2007/09/22(土) 19:26:20手順が一つ増えるけど...
もう一枚手札を切りますか? (y or n) :
027035
2007/09/22(土) 19:27:50カード選択 > S1 H1
みたいなのを有効にしてます
手札からカードを選ぶだけ選んで、出せなかったら選び直しにしてます
>>267の方がUI的に優れてるかな
0271デフォルトの名無しさん
2007/09/22(土) 19:31:200272デフォルトの名無しさん
2007/09/22(土) 19:45:31「うpロダ」はアップローダのことだな。
ただ、巷のアップローダは画像用とか圧縮ファイル用が多いから
あんまりテキストアップロードには向かないかもね…
サイトとかブログとか持ってるならそこに上げたりしてもいいと思う。
昔、プログラムコード用の外国のアップローダ
見たことあるんだけど、忘れちゃったな…どこだっけか。
0273デフォルトの名無しさん
2007/09/22(土) 19:55:210275デフォルトの名無しさん
2007/09/22(土) 20:43:070276デフォルトの名無しさん
2007/09/22(土) 21:31:37普通は一週間以内かな。大富豪作ってばかりもいられないし
0277デフォルトの名無しさん
2007/09/22(土) 21:49:12大富豪が終わったら次は何にする?
0278デフォルトの名無しさん
2007/09/22(土) 21:49:590279デフォルトの名無しさん
2007/09/22(土) 21:50:15王道なトランプゲームをいくつか実装してみる
0280デフォルトの名無しさん
2007/09/22(土) 22:19:44自己紹介乙
0281デフォルトの名無しさん
2007/09/22(土) 22:23:00ttp://www.imgup.org/iup469236.jpg.html
0282デフォルトの名無しさん
2007/09/22(土) 22:28:12参考にさせてもらうぴょん。
ところでJkKってのは何?誤記?
0283デフォルトの名無しさん
2007/09/22(土) 22:33:570284デフォルトの名無しさん
2007/09/22(土) 22:35:110285デフォルトの名無しさん
2007/09/22(土) 22:37:130286デフォルトの名無しさん
2007/09/22(土) 22:51:11って思った方。あなたが正しい
0287デフォルトの名無しさん
2007/09/22(土) 22:53:32Joker Killerの略です。すまんこって。
一応ルールは、2/Jk上がり禁止、革命有り、Jk殺し有り、が前提です。
0288デフォルトの名無しさん
2007/09/22(土) 22:57:10配列以外でいい方法無いかね
複数枚だと必ず数字が同じだから(階段は考えないで)、
それを利用して排他な表現方法が無いものかと思うんだけど……
0289デフォルトの名無しさん
2007/09/22(土) 23:00:19どういう意味?
0290デフォルトの名無しさん
2007/09/22(土) 23:01:34ルーチンは簡単になるけどあんまりスマートではないか
0291デフォルトの名無しさん
2007/09/22(土) 23:04:57場札をint型変数で管理してるんだけど、
複数枚出してる時はどんな値を格納しようかと思って。
単純に要素数が4の配列で場札を管理すりゃいいのかもしんないけどさ、
せっかく「数字が同じ」て限られているのに、
わざわざ実際にはありえない物も含めた全組み合わせを格納できる方法を採用するのも癪で……
0292デフォルトの名無しさん
2007/09/22(土) 23:08:28ちなみに俺は作りたいけど作れない人だけど
0293デフォルトの名無しさん
2007/09/22(土) 23:15:52階段は使えない仕様なん?
0294デフォルトの名無しさん
2007/09/22(土) 23:18:16とりあえず基本ルールのみ実装だからw
でも後でいろいろ加えていくとき、やっぱ困るか……
大人しく配列にします。
0295デフォルトの名無しさん
2007/09/22(土) 23:28:35階段なしなら、(出してる枚数-1)*13を加えてやればいいんじゃないかと
>>294
階段ありなら配列は4じゃなくて出せる最大枚数分だな
0296デフォルトの名無しさん
2007/09/22(土) 23:33:10>(出してる枚数-1)*13
スートはいらないならそれでいんだけど。
まあ大富豪においてスートなんか飾りだけど。
そうかあ、階段ありなら出せる枚数増えるんだよな……定数宣言しとこ
0297デフォルトの名無しさん
2007/09/22(土) 23:40:07ノ
プレイできる所まで作ったら飽きちゃって、そのまま。
0298デフォルトの名無しさん
2007/09/22(土) 23:42:04>まあ大富豪においてスートなんか飾りだけど。
ローカルルールにはスートがかなり絡んでるようだよ
0299デフォルトの名無しさん
2007/09/22(土) 23:46:27ユーザー入力と一対一対応させるために出せるカード組み合わせの配列を作ろうとしたんだ。
この配列の要素数っていくつにすればいいんだ?
0300デフォルトの名無しさん
2007/09/22(土) 23:52:26自由に出せるときにもその方法を取るのか
そうなると手札が多いとき選択肢が多くなるぞ
0301デフォルトの名無しさん
2007/09/23(日) 00:09:02トランプをデッキとして捕らえ、54枚のデッキをひとつ使うゲームとして組んだ。
俺も当然のごとく飽きて、折角用意した汎用性は無に帰したけど。
0302デフォルトの名無しさん
2007/09/23(日) 00:12:130303デフォルトの名無しさん
2007/09/23(日) 00:36:39プレイヤーが知らないはずであることは知ることができてはいけないし、知ろうとしてはいけない
という自分で作った条項に苦しんでる。
クラスじゃないから隠蔽ができないので結局そのつもりだけなんだが。
0304デフォルトの名無しさん
2007/09/23(日) 00:47:50公にオープンされる場(7並べなら並べる場所)と自分にだけオープンされる場(手札)
場構造体にユーザIDとカード配列を持たせればいい。何か難しく考えてない?
0305デフォルトの名無しさん
2007/09/23(日) 01:15:120306デフォルトの名無しさん
2007/09/23(日) 01:17:110307デフォルトの名無しさん
2007/09/23(日) 01:30:110308デフォルトの名無しさん
2007/09/23(日) 01:34:020309デフォルトの名無しさん
2007/09/23(日) 01:35:000310デフォルトの名無しさん
2007/09/23(日) 02:02:50カード出した後の穴空き配列の対処に困っているんですが
・穴空きはそのままループ用いて処理
・一回一回詰める
どちらが良いんでしょうか?
0311デフォルトの名無しさん
2007/09/23(日) 02:04:560312デフォルトの名無しさん
2007/09/23(日) 02:24:330313310
2007/09/23(日) 02:38:51ふと思ったんですが、その場合ユーザー入力はどうすればよいでしょうか?
-1をカードが無い状態として、配列に
{6,-1,8,-1,-1}
と入ってるとします
-1はループで飛ばされるので、ユーザー的には{6,8}と同義です
つまりユーザーが入力した数値が添字に対応してなくて不便ではないかと。
一回一回、ユーザー入力に対応した別の配列を生成するくらいなら、
配列を一々詰めた方が効率が良いのではないでしょうか?
もっと良い方法がありますかね?
0314デフォルトの名無しさん
2007/09/23(日) 02:42:420315デフォルトの名無しさん
2007/09/23(日) 02:49:37if (EMPTY_CARD != card[i]) みたいに毎度サーチすればいいじゃん。
0316デフォルトの名無しさん
2007/09/23(日) 03:04:39ああ、そういうタイプの配列にすればできますね
{6,8,11,23,48,51}(実際にはランク順ソート)
みたいな配列ばかりイメージしてました
>>315
例えば{6,8,11,23,48,51}で、
ユーザーが2と入力したら11を出す、と添字に対応させることを考えていました。
{6,-1,11,23,48,51}
↑こうなると表示の際には-1は飛ばされて{6,11,23,48,51}と表示されますから、
ユーザーが23を出すつもりで2と入力しても、そのまま添字にできないなあ、と。
かと言って一々ユーザー入力に対応する配列を作るなら、詰めていく方が効率良いでしょうし。
それとも、ユーザー入力nに対して、ループで配列の有効な値のn個目を毎度探せばよい、ということでしょうか?
0317デフォルトの名無しさん
2007/09/23(日) 03:07:38そういう選択のさせ方をするならその通り
0318デフォルトの名無しさん
2007/09/23(日) 03:13:46カードゲームなんて配列の要素数が少ないんだから
変に手間掛けてもCPUは喜ばないよ。
0319デフォルトの名無しさん
2007/09/23(日) 03:14:580320316
2007/09/23(日) 03:57:41すいません、こんなこと聞くのも恥ずかしいんですが、「その通り」って
>一々ユーザー入力に対応する配列を作るなら、詰めていく方が効率良い
>ユーザー入力nに対して、ループで配列の有効な値のn個目を毎度探せばよい
どちらの意味で?
0321デフォルトの名無しさん
2007/09/23(日) 04:18:59後者だろ常考
0322210
2007/09/23(日) 09:27:46もれのは前者(いちいち詰めているタイプ)
高々50数枚程度なら効率とか気にしない
まぁプログラミングの勉強に、って観点なら効率を考えてみるのもよいかもだが
0323デフォルトの名無しさん
2007/09/23(日) 09:47:09あとついでにpdcursesも
0324デフォルトの名無しさん
2007/09/23(日) 10:11:28公開したもの勝ちだ
0325デフォルトの名無しさん
2007/09/23(日) 12:56:36無粋と言うか子供っぽいと言うか…
0326デフォルトの名無しさん
2007/09/23(日) 13:02:090327デフォルトの名無しさん
2007/09/23(日) 13:16:050328210
2007/09/23(日) 13:34:35ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4951.txt
とりあえずゲーム進行まで。
革命なし。2上がり禁止なし。
次は思考ルーチンかぁ...
0329デフォルトの名無しさん
2007/09/23(日) 13:43:35...見れないorz
0330デフォルトの名無しさん
2007/09/23(日) 16:53:46ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4953.zip
0331デフォルトの名無しさん
2007/09/23(日) 17:52:000332デフォルトの名無しさん
2007/09/23(日) 18:19:24どうすればいいか分からなかった
0333デフォルトの名無しさん
2007/09/23(日) 19:26:03やべえ、公開したくなくなってきたww
0334デフォルトの名無しさん
2007/09/23(日) 20:04:21むしろ公開して、サイズが膨れあがった原因を突き止めるんだ
0335333
2007/09/23(日) 20:11:17むしろデバッグが終わらな(ry
・複数枚が何故か出せない
・出せるはずのカードが何故か出せない
・AIが何故かたまに無限ループ
関数関係が複雑でデバッグめんどいw
0336デフォルトの名無しさん
2007/09/23(日) 20:13:140337デフォルトの名無しさん
2007/09/23(日) 20:13:26今のところバグはないが、俺は12000バイト前後あるぞ
0338デフォルトの名無しさん
2007/09/23(日) 20:13:43関数毎にテスト。
それで問題ないなら組み合わせてテスト。
0339デフォルトの名無しさん
2007/09/23(日) 20:21:09カードどうやって扱ってるんだ
0340333
2007/09/23(日) 20:31:59試してみまつ
>>337
こっちも修正したらそんくらいになるかもorz
>>338
int cards[PLAYER_NUM][PLAYER_CARD_MAX];
0341デフォルトの名無しさん
2007/09/24(月) 14:51:450342デフォルトの名無しさん
2007/09/24(月) 20:56:21んもう、これ使っちゃおうぜ?
0343デフォルトの名無しさん
2007/09/25(火) 09:48:13ってスレが違っちゃうか・・・
0344デフォルトの名無しさん
2007/09/25(火) 09:50:32ほぼ確実にここに誘導されるから
そういう経緯なら追い出されることは無いだろうよ
0345デフォルトの名無しさん
2007/09/25(火) 13:01:090346デフォルトの名無しさん
2007/09/25(火) 13:07:03言語何でもOKならみんなは何で作る?
0347デフォルトの名無しさん
2007/09/25(火) 16:33:12敢えて非オブジェクト指向言語であるC言語を使って
四苦八苦することにノスタルジーを感じるのがこのスレの趣旨だと理解しているが
0348デフォルトの名無しさん
2007/09/25(火) 17:04:22>>323
公開したもの勝ちだ
0349デフォルトの名無しさん
2007/09/25(火) 17:58:130350デフォルトの名無しさん
2007/09/25(火) 18:05:51あそこでやるなら普通GUI
0351デフォルトの名無しさん
2007/09/25(火) 23:58:110352デフォルトの名無しさん
2007/09/26(水) 02:00:40むしろ調べようもなく知る術すらないのに、気にしてばかりいると
すぐに禿げて寿命も縮んで、いつの間にかコロッと死んでしまうかもしれないぞ。
人間、くよくよしない、それが長生きの秘訣だって100歳になった双子が言ってたじょのいこ?
0353デフォルトの名無しさん
2007/09/26(水) 02:06:140354デフォルトの名無しさん
2007/09/26(水) 02:17:37社会人になったせいか。時間の流れは速いなw
0355デフォルトの名無しさん
2007/09/26(水) 02:18:49自分が知る日本語の範囲内で理解しようとしても、レベルが低いから相手にならない。
こんなプロジェクトに参加すること自体、厚かましい。早々に立ち去れい >>353
0356デフォルトの名無しさん
2007/09/26(水) 02:22:34お前には朝鮮語で話をした方が良かったか?悪い、俺日本人だし
朝鮮語は勉強したことないからさっぱり分からん。
0357デフォルトの名無しさん
2007/09/26(水) 02:25:35他人が知って欲しい「意味」を読み取れないのかな
0358デフォルトの名無しさん
2007/09/26(水) 02:30:35ゆとり世代の日本語おk君、君は記事をしっかり読みましょう。まずはそこから。
まぁ、お前の日本語力じゃ記事の意味すら理解できないだろうし、長生きの秘訣すら
理解できないだろうね。ほら、お前今何歳だ?鏡を見ろ、何歳に見える?
20代なのに、禿げたりデヴってたり、しわやしみが増えて
30代を過ぎたオッサンになってねーか?w
0359デフォルトの名無しさん
2007/09/26(水) 02:34:59「こんとんじょのいこ」って言うと、えなりかずき君が言っている様に
聞こえるというネタだから。それを指定したのなら、ネタに反応したのはどっちやら?w
0360デフォルトの名無しさん
2007/09/26(水) 02:36:550361デフォルトの名無しさん
2007/09/26(水) 02:43:410362デフォルトの名無しさん
2007/09/26(水) 02:45:31チュンデレでちゅか?
>>361
それはちょんでもないことだ。
0363デフォルトの名無しさん
2007/09/26(水) 02:46:59〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
0364デフォルトの名無しさん
2007/09/26(水) 02:47:40〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつが最高にアポー
0365デフォルトの名無しさん
2007/09/26(水) 02:50:250366デフォルトの名無しさん
2007/09/26(水) 02:52:350367デフォルトの名無しさん
2007/09/26(水) 06:39:40トランプとは「切り札」を意味する言葉で、英語では「プレイングカード」といった呼び名。
だからcardsと言うのさ、俺は、ふっ。
0368デフォルトの名無しさん
2007/09/26(水) 15:31:20ここは日本語で大丈夫なスレです。
英語に堪能なあなたにはきっと辛いこともあるでしょう。
でも大丈夫。この壷をあなたの家のトイレに飾r
0369デフォルトの名無しさん
2007/09/26(水) 18:47:540370デフォルトの名無しさん
2007/09/26(水) 19:09:020371デフォルトの名無しさん
2007/09/26(水) 21:01:270372デフォルトの名無しさん
2007/09/26(水) 21:37:270373333
2007/09/26(水) 22:33:00ウンコcodeがなんとか形になりましたので上げてみた。
複数枚処理を書き直して、入力方式は>>328さんのを真似てみますた。
コードが汚い・分かり辛い(特にAI周り)はとりあえず勘弁してくださいw
・ローカルルールや上がり制限は無し
・ジョーカーあり(ワイルドカード・最強カード)
・プレイ人数はデフォルトで3人。コード冒頭の定数を書き換えて変更できるが、54の約数以外では多分おかしくなる。
・AIは「出せるカードのうち最弱」なのを出すようにしてる。AI周りのコードは未整理なんでw
0374デフォルトの名無しさん
2007/09/26(水) 22:52:070375デフォルトの名無しさん
2007/09/26(水) 22:53:39エラー(デバッガ例外)がでるのは仕様?
当方C++Builder6
int turn(int *cards , int *hasnum , int *fieldcard , int fieldnum , int pnum){
〜
num = userturn(cards , hasnum[i] , fieldcard , fieldnum , nextindex); ←ココ
0376333
2007/09/26(水) 23:11:47一旦削除しましたので、修正版↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4977.txt
>>375
まじすか
うちは5.5だけど出ないorz
もっと具体的なエラーの文面とか出ますか?
0377デフォルトの名無しさん
2007/09/26(水) 23:13:480378333
2007/09/26(水) 23:19:25compiler
0379デフォルトの名無しさん
2007/09/26(水) 23:22:58//戻り値: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の値不定じゃない?
0380デフォルトの名無しさん
2007/09/26(水) 23:23:480381333
2007/09/26(水) 23:34:18それだ! 変数名間違えたorz
はい、ということで修正しますたorz
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4978.txt
しかしよくこんなミスしてバグ出ずに動いてたな。
削除してばっかでろださんに悪い……
てかさっきからそこ眺めてたのに気づかない俺ってorz
0382333
2007/09/26(水) 23:38:29修正版は上げませんけど、247行目、userturn関数の最後から2行目のprintfは消して構いません。
ミス多すぎですねorz
少し吊ってきまつ
0383デフォルトの名無しさん
2007/09/26(水) 23:41:080384333
2007/09/26(水) 23:43:55どうみてもおかしいです
本当にありg(ry
0385デフォルトの名無しさん
2007/09/27(木) 00:24:32がんがれw
0386デフォルトの名無しさん
2007/09/27(木) 00:53:12>>381のプログラム見てもサパーリ
0387333
2007/09/27(木) 02:06:29俺のコードはかなり汚いからw
>>328さんのとかは一つ一つの関数がすっきりしてて、
俺のなんかよりよっぽど分かりやすいと思うよ
>>383
初めてCに触れたのは3年くらい前
だけどちゃんとしたプログラミングは今回が初
学生でつ
0388デフォルトの名無しさん
2007/09/27(木) 04:22:01コンパイルしていないから実装のレベルは無視。
でもまぁ、なんていうか、もうちょっと空白や改行を大事にしてくれよ。
0389デフォルトの名無しさん
2007/09/27(木) 23:11:150390デフォルトの名無しさん
2007/09/28(金) 00:28:121行何文字って定義の元で行数を言わないと
改行するまで1行ってことにすれば、すべてのコードが
扱うコンピュータやエディタが表示可能な限り、1行で済むぜ?
0391デフォルトの名無しさん
2007/09/28(金) 00:30:130392デフォルトの名無しさん
2007/09/28(金) 00:35:47今度は別にそれに応じて行数は無視してもなら問題はない。
要するに○行という考え方そのものがナンセンスだということさ、ふっ。
俺、今世紀最大の偉人じゃね?ぜってー俺って歴史に名が残るぜ?
お前ら名の残らないパンピーは俺にひれ伏すが良い
0393デフォルトの名無しさん
2007/09/28(金) 00:36:530394デフォルトの名無しさん
2007/09/28(金) 01:05:17○バイト、半角文字の数を基準にした方が良いじょのいこ?
0395デフォルトの名無しさん
2007/09/28(金) 01:15:32単なるネタだしょ
0396デフォルトの名無しさん
2007/09/28(金) 01:25:01なーなーなななーなななーなーなー(DJ OZMA!)
0397デフォルトの名無しさん
2007/09/28(金) 01:26:17プログラマの中では共通理解が出来ているから良いんだよ。
1行80桁というのはテレタイプとかの時代からなのかな。
今でも端末エミュレータを開くとデフォルトで横幅80桁の
表示になるよ。7行というのはDVDのコピーガードを、とある
学生がたった7行のスクリプトで破ったという故事から。
0398デフォルトの名無しさん
2007/09/28(金) 01:32:17プログラマの中で共通っていうのは分かるが、問題はそこじゃない。
行という言葉に対してどういう定義がされているのか?
そもそも7行にこだわる意味があるのか?
それらを含めたら、7行なんていうこと自体がナンセンスなのさ。
0399デフォルトの名無しさん
2007/09/28(金) 01:36:540400デフォルトの名無しさん
2007/09/28(金) 02:23:44その上で仕様変更があるなら正しく変更できるプログラムが良いプログラム
0401デフォルトの名無しさん
2007/09/28(金) 02:31:160402デフォルトの名無しさん
2007/09/28(金) 02:32:380403デフォルトの名無しさん
2007/09/28(金) 04:28:09知っているからこそ疑問に思ったんだろ。そういう定義による7行ってのが
果たして意味があるのか?って話。むろん、こだわる必要がない以上無意味。
また、言うなれば実行プログラムのサイズや使用するライブラリの制限をした方が面白そうなんだが
0404デフォルトの名無しさん
2007/09/28(金) 04:34:430405デフォルトの名無しさん
2007/09/28(金) 05:06:400406デフォルトの名無しさん
2007/09/28(金) 07:49:46いや、明らかに知らなかったよ。まあ良いじゃん。
0407デフォルトの名無しさん
2007/09/28(金) 11:52:55七行プログラミング part5
http://pc11.2ch.net/test/read.cgi/tech/1142467359/
七行プログラミング
http://pc11.2ch.net/test/read.cgi/php/1036141603/
0409デフォルトの名無しさん
2007/09/28(金) 22:13:040410333
2007/09/28(金) 22:13:46int 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
改行・空白が少ないってことですか?
0411デフォルトの名無しさん
2007/09/28(金) 23:12:40> #define CARD_RANK(n) ((n)/13 == 4 ? JOKER_RANK : ((n) + 11) % 13)
のせいじゃね?
あと、>410 と >381 のシャッフルに違いがあるとは思えんのだが
0412デフォルトの名無しさん
2007/09/28(金) 23:31:15このシャッフル(?)って、全員の枚数は均等になるの?
たとえば53枚を5人で分けたら、3人11枚で2人は10枚になる?
0413デフォルトの名無しさん
2007/09/28(金) 23:35:260414デフォルトの名無しさん
2007/09/28(金) 23:40:43そうだね
0415デフォルトの名無しさん
2007/09/29(土) 00:00:27細かいことだけど、ループはi=0からじゃなくてi=1からでok
0416デフォルトの名無しさん
2007/09/29(土) 00:09:57>>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 {
って感じで空行を入れたりインデントしたりすれば、もちょっと分かりやすいかなと思うんだ。
いや、オレの読む力が無いだけかも知れんので、
こういう風に感じる人もいた、とだけ覚えておいてくれれば。
0417デフォルトの名無しさん
2007/09/29(土) 00:13:120418333
2007/09/29(土) 00:15:36CARD_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;と入れていたんですが、まとめた方がすっきりするだろうと思ってまとめました。
0419333
2007/09/29(土) 00:19:45>>416
今度から気を付けてみます
どっか別のところは一行ifでもインデント入れてたような気もしますが……統一しなきゃ
本当いうと三項演算子にifの変わりするのもあまり褒められたもんじゃないんでしょうけどね
0420デフォルトの名無しさん
2007/09/29(土) 00:20:57でも、配列を{0}で初期化しといて無駄な計算とスワップ減らした方がよくね?
0421333
2007/09/29(土) 00:28:10ああ、それ、この前から気になりつつも検索してなかったですw>配列を0初期化
{0}でできるんですね。じゃあそれでやっておきます。
ありがとうございます。
なんかレスしてばかりで悪いのでそろそろ何か自粛しときます。
0422デフォルトの名無しさん
2007/09/29(土) 00:31:40学生でここまでできるならすごいと思うぞ。特にわざわざCでトランプとか作る奴も少ないし
0423デフォルトの名無しさん
2007/09/29(土) 00:41:31今時それくらいじゃすごいなんて思わんけど。むしろやっている奴は
それくらい出来て当たり前。俺なんてC言語を週1の授業で習った程度で
本格的にやらずとも、学生時代は普通にトランプゲームなんて作ってましたが何か?
0424デフォルトの名無しさん
2007/09/29(土) 00:48:09完璧とは言わないけど少しは読めるようになった。ただこれを作れって言われたらシャッフルするところで
限界
0425デフォルトの名無しさん
2007/09/29(土) 00:49:15はいはい、すごいすごい
0426デフォルトの名無しさん
2007/09/29(土) 00:51:13PCも10年前と比べたら性能は雲泥の差でしょ。それに日本は
生活水準も上がってきて、パソコンなんて簡単に手に入る。
この程度のことを高校生で出来ない奴が情報系の学校に来ても
将来が危ういだけなんだよ。すごいじゃなくて当然。
0427デフォルトの名無しさん
2007/09/29(土) 00:54:25はいはい、すごいすごい
0428デフォルトの名無しさん
2007/09/29(土) 00:55:40で良いじゃん
0429411
2007/09/29(土) 00:55:52((n) + 11) % 13 って
n
=0 -> 11
=1 -> 12
=2 -> 0
=3 -> 1
:
=11 -> 9
=12 -> 10
ってことだ! すんません理解できますた。おかしくないです。
0430デフォルトの名無しさん
2007/09/29(土) 00:58:310431デフォルトの名無しさん
2007/09/29(土) 01:03:040432デフォルトの名無しさん
2007/09/29(土) 01:05:03なんとなく勘違いしてそうなので書いておく。
配列を{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 だ。
間違って覚えないように。
0433デフォルトの名無しさん
2007/09/29(土) 01:07:02誰でも出来る。しかし、プログラミングが出来る奴でもパソコンの操作が苦手な人もいる。
なんだかんだ言っても、プログラミングには数値計算や理論的な考え方が必要になる。
もっと柔軟な考えを持つんだな。
0434デフォルトの名無しさん
2007/09/29(土) 01:11:15たいしたソースでなくても、実際に上げてるぶんだけ、口先だけのお前よりよっぽど凄いよ
0435デフォルトの名無しさん
2007/09/29(土) 01:12:23a[5]={0}はa[0]を初期化するだけで他の初期化子の足りない要素は全部0、
a[5]={0}は{0,0,0,0,0}ってことだしa[5]={0,1}は{0,1,0,0,0}になる
0436デフォルトの名無しさん
2007/09/29(土) 01:13:11更新せずに書き込んだ俺涙目
0437デフォルトの名無しさん
2007/09/29(土) 01:13:59> 口先だけのお前よりよっぽど凄いよ
へ?別に 俺より なんて基準はどうでも良いんだけど。
けど、あれくらい俺には10年前には出来ていたが?
0438デフォルトの名無しさん
2007/09/29(土) 01:22:160439デフォルトの名無しさん
2007/09/29(土) 01:26:330440デフォルトの名無しさん
2007/09/29(土) 01:29:20このスレの人間にとっては非常に興味のない事なんだが、空気悪くしたいだけなら他所へ行ってくれ
0441デフォルトの名無しさん
2007/09/29(土) 03:33:58> srand(time(NULL));
これも細かく厳密に言えば、time()が返す値は time_t 型。
srand() に与える引数は unsigned int 型。
今、BCCのtime.hの中身を見てみたら
typedef long time_t;
と定義されていた。符号ありのlong型。
っつーわけで、こまきゃ〜こと言ったがや、srand( (unsigned int)time(NULL) );
ってキャストしておくのが適切だぎゃや。
ちゃんこうまでに
ttp://www.bohyoh.com/CandCPP/C/Library/time.html
ttp://www.bohyoh.com/CandCPP/C/Library/srand.html
0442デフォルトの名無しさん
2007/09/29(土) 03:36:11いや、そうやって食いついてくる負け犬のお前が吠える方が空気を悪くしていると思うんだが?
所詮負け犬の遠吠えだろ?みっともないからやめろ。出来る奴を相手にすると
弱腰になるどころか、詰まらん粗探しを始めて、自分基準で叩き始めるタイプだろ?
出来て当たり前が出来ない奴が何をほざいても、世の中通用しないよ。
ほらっ、路上を見てみろ。当たり前に守る道路交通法を守らない奴が
流れを悪くした方が場の空気、流れが悪くなるだろ?みんながみんな守ってりゃ
流れは悪くならない。しかし、車の数が多くなると、人の数が多くなると
人間ってそういう状況に耐えられなくてね。つい我先にとでしゃばっちゃう奴もいるんだよ。
それが君だ。
0443デフォルトの名無しさん
2007/09/29(土) 03:50:51正直どうでもいいし、わかってて面倒だから省略してるのがほとんど。
0444デフォルトの名無しさん
2007/09/29(土) 03:58:38とりあえず消えないならコテつけろよ
0445デフォルトの名無しさん
2007/09/29(土) 04:05:15っつかお前みたいに煽る方が鬱陶しい。消えるならお前の方だろ
0446デフォルトの名無しさん
2007/09/29(土) 04:06:26> 正直どうでもいいし、わかってて面倒だから省略してるのがほとんど。
それが素人志向、なんつって。最近じゃコンパイラ任せな人も少なくないが
知ったかぶるとボロが出て言い訳もみっともないぞ。
0447デフォルトの名無しさん
2007/09/29(土) 04:08:10はいはい、すごいすごい
0448デフォルトの名無しさん
2007/09/29(土) 04:08:23お前、いままで散々ボロだしときながらまだ懲りてないの?
0449デフォルトの名無しさん
2007/09/29(土) 04:25:330450デフォルトの名無しさん
2007/09/29(土) 04:36:220451デフォルトの名無しさん
2007/09/29(土) 04:53:41すっごくすごい
0452デフォルトの名無しさん
2007/09/29(土) 05:02:21Cはド素人だが俺も勉強がてら何か作ってみようかな
何作ろう、簡単そうなカードゲームってなんかないかしら
0453デフォルトの名無しさん
2007/09/29(土) 06:01:11素人かどうか見極めるのにちょうどいい質問だな
0454デフォルトの名無しさん
2007/09/29(土) 06:17:56これはプログラムそのものに問題がある場合もあるが、誤作動を起こす動作環境
(ハードウェア、OS)にも話が及ぶんで、現実的には無理。素人とか以前に
100%誤作動を起こさないものがあると言わなきゃ良いだけだよw
0455デフォルトの名無しさん
2007/09/29(土) 06:26:28ただし、ユーザが誤作動をしていると思わなきゃ良いだけの曖昧さはあり。
まぁ、あの程度のソースで すごい なんていう奴の話は聞き飽きたから、失せろ。
0456デフォルトの名無しさん
2007/09/29(土) 06:32:42っつか、揺さぶっている奴らは自分らがそれについて見解を示せよ。
他人に質問するばかりで、自分らは何も答えることが出来ないくせに
その程度って評価するのはおかしい。むしろ、自分が知らなかったことを
付き返されてファビョってんだろ?time()にしろsrand()にしろ。女々しいぞ、お前等。
0457デフォルトの名無しさん
2007/09/29(土) 06:37:130458デフォルトの名無しさん
2007/09/29(土) 06:40:21お前441?
引数に代入されるとき型変換されるから、キャストする必要なんて全くないよ
0459デフォルトの名無しさん
2007/09/29(土) 06:51:28昨日7行云々でアホな事書いて煽られた奴が腹いせに荒らしてるのか
0460デフォルトの名無しさん
2007/09/29(土) 06:52:54int main()
{
TranpuGame();
return 0;
}
0461デフォルトの名無しさん
2007/09/29(土) 06:57:140462デフォルトの名無しさん
2007/09/29(土) 07:47:42だから犯罪にならない
故に完全犯罪は存在しない
0463デフォルトの名無しさん
2007/09/29(土) 07:50:46int main() {
Game::Main::Start();
}
見たいに書けたら格好よぐね?
意味もGameモジュールのメインモジュールをアプリケーションエントリポイントから
起動してるんだなぁってはっきりしてるし
少なくとも俺が昔使ってた
Game()();よりは判りやすい筈w
0464デフォルトの名無しさん
2007/09/29(土) 08:06:34それが出来ないという罰ゲームのノリがわからない奴だな
0465デフォルトの名無しさん
2007/09/29(土) 09:08:12要は一人遊び系
コンピュータの思考ルーチンとか要らんし
クロンダイク(Win付属のソリティアと一緒)とか
イーブン、クローバー、ピラミッド、スパイダー…
ソリティア系だけで結構色々ある
0466デフォルトの名無しさん
2007/09/29(土) 14:58:320467デフォルトの名無しさん
2007/09/29(土) 14:59:55それは言おうとしたが単純なだけに作るのもつまらなく
言えばお前が作れ言われると思って言わなかった。
0468デフォルトの名無しさん
2007/09/29(土) 15:05:42コンピュータの思考ルーチン考えるのは単純じゃないな
...いんちきするならそうでもないがw
0469デフォルトの名無しさん
2007/09/29(土) 15:13:20神経衰弱には
あるプレイヤーに分かっていて他のプレイヤーには分からないという要素がない。
だからAIが人間的な忘却をエミュレートしない限り勝敗は純粋に確率的なものになるということ。
0470デフォルトの名無しさん
2007/09/29(土) 15:14:05組がなければまだ開けてないカードをランダムに一枚開けて記憶しておいたカードの中に組となるものがあれば開ける
なければもう一枚ランダムに開く
これ以外に何か戦略ある?
0471デフォルトの名無しさん
2007/09/29(土) 15:15:360472デフォルトの名無しさん
2007/09/29(土) 15:17:00これ、相手に有利になっちゃうだろw
あえてすでにひらいてあるカードを選ぶ、って戦略じゃね?
0473デフォルトの名無しさん
2007/09/29(土) 15:20:38ならば相手も同じ戦略を取ればよし
進行が遅くなるだけで結果は変わらない
0474デフォルトの名無しさん
2007/09/29(土) 15:23:33最後は未知のカードを開けない方がいいのかな?
期待値はゲームの段階や既知のカード数によって変わらないかな?
0475デフォルトの名無しさん
2007/09/29(土) 15:23:580476デフォルトの名無しさん
2007/09/29(土) 15:25:07本当に?
2枚目あけたときに 1枚目と同じになるより 過去に開けていたカードと同じなる方が多いと思うんだけど?
次のプレイヤーが有利になるじゃん
0477デフォルトの名無しさん
2007/09/29(土) 15:30:490478デフォルトの名無しさん
2007/09/29(土) 15:31:590479デフォルトの名無しさん
2007/09/29(土) 16:07:31双方同じ戦略で戦えば有利不利ということもない
0480デフォルトの名無しさん
2007/09/29(土) 16:13:46論理的に類推しうる要素が全くないんだよ
0481デフォルトの名無しさん
2007/09/29(土) 19:52:15なるほど、確かに犯罪があったのかどうかも分からないなら
完全犯罪以前に闇に葬られるであろう。では、犯罪があったが
犯人が分からない。指紋など決定的な証拠があるけど捕まらない
といった類ではどうだね?まぁ、あれこれ挙げたらキリがない。
とにかくこの世にはすべてにおいて「完全」「完璧」などないと言って過言ではない。
今もこうして、予期せぬ事故は起こる・・・
0482デフォルトの名無しさん
2007/09/29(土) 20:23:12どちらも普通に存在するだろ
0483デフォルトの名無しさん
2007/09/30(日) 00:53:04だからそういうことだって。いちいち 分かりきったことを偉そうに 解説するなよ、青二才
0484デフォルトの名無しさん
2007/09/30(日) 22:45:28すべての可能性をプログラムすることが不可能になってきたからである。
ある研究報告によれば、5000年間プログラムを実行して1回しか障害を起こさないような小さなバグがシステムの安全性を損ねている。
さまざまな角度から検査を行うのだが、米国の民間航空機のように1時間当たり10億分の1以下の障害発生率が要求されるシステムでは、
こうしたバグを除去するには数十万年間も検査をし続けなければならない
0485デフォルトの名無しさん
2007/09/30(日) 22:46:430486デフォルトの名無しさん
2007/10/01(月) 02:41:580487デフォルトの名無しさん
2007/10/01(月) 22:59:11Wnidows2000/XP/Vista用 要.NET Framework2.0
ソース+exe
やっつけなんで無駄多し、AIは超手抜き、誰か作って。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5008.lzh
0488デフォルトの名無しさん
2007/10/01(月) 23:30:45Wnidows2000/XP/Vista用 要.NET Framework2.0
ソース+exe
>478のTurbo C++版
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5009.lzh
0489デフォルトの名無しさん
2007/10/01(月) 23:43:520490>487
2007/10/01(月) 23:55:132上がりありか?
革命は試せなかったけどどうなの?
0491デフォルトの名無しさん
2007/10/02(火) 06:16:46見た目があんまりショボイと餅平衛がどっか行っちゃうから
C言語でコンソールアプリの条件を満たしたソレほどショボくないUIを提示しただけ。
中身はサンプル程度に組んであるだけ。
AIに至っては何の工夫も無く兎に角出せるカードを出してるだけ。
同スート3枚以上、革命…そんなローカルルールは知らん。
2上がりあり。つーか作りこんでないから最低限のチェックしか入ってない。
改造して使いまわしやすいように作ったつもりだしツールもフリーで手に入るVC++とTurboC++のどっちでもOKにした。
#unicodeの扱いさえわかればBCCでもgccでもビルド出来る筈だしスートの表示を諦めれば古いコンパイラでもビルド出来る。
なので中身の作りこみは他の奴に任せる。
0492デフォルトの名無しさん
2007/10/02(火) 06:20:530493デフォルトの名無しさん
2007/10/02(火) 18:20:100494デフォルトの名無しさん
2007/10/03(水) 00:02:00もちひらまもる?
0495デフォルトの名無しさん
2007/10/03(水) 03:30:30スレ違いすまそ。
0496デフォルトの名無しさん
2007/10/03(水) 04:16:50文脈から一見さんあたりのことを言っているのだろう、
新語か?とぐぐってみたが見つからない。
でモチベーションをゆとりっぽく略したものと結論付けた。
今時C使ってCUIでやろうって>1の時点で
モチベーションは限りなくゼロに近いんだから
いまさらどうこう言っても意味がない。
0497デフォルトの名無しさん
2007/10/05(金) 19:38:380498328
2007/10/06(土) 00:53:52どんな戦略がいい?
出せるなら出す、ってなんだかなぁ...
あと、場より多い枚数のペアがある時、多い枚数のシーケンスがある時
とか...
いきづまってまつ
0499デフォルトの名無しさん
2007/10/06(土) 19:40:010500デフォルトの名無しさん
2007/10/06(土) 22:02:37現時点で場に出たカードを除いた状況で、他のプレーヤーがより強いカードを
出せる確率を計算するようにしたよ。
場のカードを全部数えるのかよコンピュータは、とは思うけど、プロ棋士同士で
お遊びでやった大富豪で覚えてた、って話もあったから有りかと。
0501デフォルトの名無しさん
2007/10/06(土) 22:20:010502デフォルトの名無しさん
2007/10/06(土) 22:50:31で,強くなった?
0503デフォルトの名無しさん
2007/10/06(土) 23:34:170504デフォルトの名無しさん
2007/10/06(土) 23:39:270505デフォルトの名無しさん
2007/10/07(日) 00:46:32少年漫画の世界にはいそうだなw
0506デフォルトの名無しさん
2007/10/07(日) 01:08:460507デフォルトの名無しさん
2007/10/07(日) 01:49:27自称主人公を科学の力でこてんぱんにしてくやつ
0508デフォルトの名無しさん
2007/10/07(日) 03:16:570509デフォルトの名無しさん
2007/10/07(日) 18:16:09結構。人並みの対戦能力はある。
0510デフォルトの名無しさん
2007/10/07(日) 23:39:54「他のプレーヤーがより強いカードを出せる確率を計算する」って、そんでどうするの?
より強いカードを出せる確立が高い場合は、自分は出さない、って事?
場に出てないカードを考慮するだけ? 他のプレーヤーの持ち枚数とかは何か考慮している?
0511デフォルトの名無しさん
2007/10/08(月) 00:14:26そこで得られた確率を、>>281の思考ルーチンに突っ込むの。
要するに、>>500は認知、>>281で判断。
>他のプレーヤーの持ち枚数とかは何か考慮している?
当然。相手が一枚しかないなら、階段出せば相手は嫌でもスルーだし。
0512デフォルトの名無しさん
2007/10/08(月) 00:54:04404 Not Found
0513デフォルトの名無しさん
2007/10/08(月) 13:07:100514デフォルトの名無しさん
2007/10/08(月) 13:10:330515127
2007/10/08(月) 20:52:17まずケースに入ったトランプを用意しよう。
ケースの中にはトランプが順番に入っている。
A,2,3,…Q,Kのランク順でスペード,ハート,ダイヤ,クラブのスート順だ。
誤解のないように例を出すと,スペードのKの次はハートのAになる。
またクラブのKの次にはJOKERが二枚入っている。
この計54枚のカードを使ってゲームをするわけだ。
0516デフォルトの名無しさん
2007/10/08(月) 20:55:290517デフォルトの名無しさん
2007/10/08(月) 21:34:110518127
2007/10/08(月) 21:40:59さて,大富豪というゲームを君たちは知っているかな?
1970年代に日本のトーキョーで生まれたとされ,かつては大貧民と呼ばれたゲームだ。
プレイヤーは複数で,ゲームの最初に彼らに等しくカードを全て配る。
等しくと言ってもプレイヤーの数によって端数が出る。
端数の処理の方法はいろいろあるが,今回は端数を気にせず最後まで順に配り終えることにしよう。
おっと,言い忘れたが,今回シャッフルはしない。
0519デフォルトの名無しさん
2007/10/08(月) 21:53:09そのまま話を続けましょう
0520127
2007/10/08(月) 22:43:16役―1枚,2枚以上の同位札,もしくは3枚以上の同一スートによるシーケンス(※注:連番)―を作り,順次場に出していく。
持っているカードが無くなれば,あがりとなってプレイの輪から抜けることができる。
残りのプレイヤーが一人となった時点で1ゲーム終了となり,あがりとなった順に順位が決定する。
最後に残ったプレイヤーは最下位だ。
場とは役を出す場所であり通常1ゲームに複数の場が作られるが同時に複数の場は存在できない。
場が破棄されることを場が流れると言い,場が流れたあとは新しい場が1つ作成される。
ゲーム開始時に最初の場が1つ作成される。
場に最初に役を出すプレイヤーを親と呼び,その場に出すことの出来る役の種類を決定できる。
最初の場の親を決定する方法は,これも様々な方法があるが,今回はダイヤの3を配られたプレイヤーとする。
カードは3が最も弱く,続いて4,5,…,Q,K,ときてA,2の順に強くなる。
そしてJOKERは2より強く,またワイルドカードとしても使用できる。
カードの強さに遵って役の強さが決まり,場に出す役は場の役―最後に場に出された役―より強くなければならない。
出せる役がない場合はそのプレイヤーはパスとなり次のプレイヤーの番となる。
場のプレイヤー―場の役を出したプレイヤー―以外のプレイヤーが全てパスとなったとき,
その場は流れ,そのプレイヤーが次の場の親となる。
場のプレイヤーがあがりとなり,かつ残りのプレイヤーが全てパスとなったとき,
その場は流れ,そのプレイヤーの前に場のプレイヤーであってまだあがりでないプレイヤーが次の場の親となる。
基本的なルールはこんなところだ。
何か質問は?
では次回。
0521デフォルトの名無しさん
2007/10/09(火) 01:24:26CPUの人間的思考の実装方法はまだか!
0522デフォルトの名無しさん
2007/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)ならば、ペア優先
0523127
2007/10/13(土) 18:56:320524デフォルトの名無しさん
2007/10/13(土) 18:56:530525127
2007/10/13(土) 22:52:160526デフォルトの名無しさん
2007/10/13(土) 22:52:480527127
2007/10/13(土) 23:00:25その病状の一つに自分が誰かに監視されているといった妄想がある
そうここには
誰もいない
誰もいない
誰もいない
0528デフォルトの名無しさん
2007/10/13(土) 23:09:560529127
2007/10/13(土) 23:45:04従って自分の外にも誰もいない
誰かがいるという幻想こそが
不幸の根源なのだ
0530デフォルトの名無しさん
2007/10/13(土) 23:46:180531デフォルトの名無しさん
2007/10/14(日) 00:26:020532127
2007/10/14(日) 09:51:020533127
2007/10/14(日) 22:38:020534デフォルトの名無しさん
2007/10/14(日) 22:55:390535127
2007/10/14(日) 23:08:350536127
2007/10/14(日) 23:22:380537デフォルトの名無しさん
2007/10/15(月) 12:56:270538127
2007/10/15(月) 19:47:08実は疑問がないわけではない
0539デフォルトの名無しさん
2007/10/16(火) 01:33:220540127
2007/10/16(火) 03:00:00最初はシンプルに行こう。
ややこしいことは無しだ。
プレイヤーの数は5人とし,全て同じAIを使用する。
カードは1デッキとジョーカー2枚の計54枚とし,毎回ゲームのはじめにシャッフルする。
初回は最初に登録されたプレイヤーからディールする。
そしてダイヤの3を持ったプレイヤーを最初の場の親としてゲームを開始する。
初回以降は前回最下位のプレイヤーの次のプレイヤーからディールする。
そして前回最下位のプレイヤーを最初の場の親としてゲームを開始する。
役はシーケンスが3から5枚,同位札が2から5枚,そして1枚札,とする。
AIが場の親のとき,シーケンス,同位札,1枚札,の順に,枚数のより多い役のうち,弱い役から出していく。
AIが場の親でないとき,場の役と同種でより強く,かつ手持ちのカードで作れる最も弱い役から出していく。
またジョーカーをワイルドカードとして使用可能なときは使用する。
同様にジョーカーを同位札,または一枚札として使用可能なときは使用する。
0541デフォルトの名無しさん
2007/10/16(火) 15:47:13・人数は2人でジョーカーは無しで52枚
・始める人も固定、順番も同じ
・カードのシャッフルなんてしない
辺りが適切では無いか?
流れをまず作って、他は後から付け加えると楽ジャマイカ?
0542127
2007/10/16(火) 18:11:36誰であるかも分からないのに
誰かがいるという認識が間違いでないと
どうして言えよう
0543デフォルトの名無しさん
2007/10/16(火) 19:11:110544127
2007/10/16(火) 20:35:00(厳密にはそうではないが実用上)
自己の認識に委ねられているということだ
すなわちそれが自分の書いたものであるという記憶によってのみ
自己の他者との境界を認識しうるのである
加えてそれが自分の書いたものであるという証明が自助努力の範囲内において不可能であるが故に
誰もその存在を主張する以上のことはできず
したがってここには誰もいないという認識を誰も否定することは出来ないのである
「匿名非同期コミュニケーションの真実(非売)」より引用
0545127
2007/10/16(火) 20:39:270546127
2007/10/17(水) 21:12:19本当に誰もいなくなってしまった
0547デフォルトの名無しさん
2007/10/18(木) 02:56:090548127
2007/10/18(木) 03:04:03シンプルという点に疑問の余地ありとの意見だが,
たしかに上記のルールでは各ゲームごとの独立性が不十分であり,
出発点とするには不適切かもしれない。
そこで,ディールの開始プレイヤーと最初の場の親に関するルールについて検証してみよう。
まず以下のことについて確認しておく。
全てのプレイヤーが同一のアルゴリズムに従ってプレイするとき,
その結果は各プレイヤーの持ち札と最初の場の親によって一意に決定される。
ここで,各プレイヤーの持ち札と最初の場の親が完全にランダムに決定されるとき,
任意のプレイヤーが任意のランクになる確率は等しくなる。
0549デフォルトの名無しさん
2007/10/18(木) 03:07:490550デフォルトの名無しさん
2007/10/18(木) 03:21:540551127
2007/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
0552127
2007/10/18(木) 19:43:52おっと言い忘れたが,最初のゲーム開始時のプレイヤーのランクは全て0だ。
それから連番は1.ではなく(1)に訂正する。
さて上記の結果からは,Totalの値が全て2000付近であることが分かる。
ゲーム回数は10000であるから各ランクになる確率は等しく1/5ということになる。
つまり,勝負は完全に時の運ということだ。
更に,各ランクから各ランクへの遷移確率も全て0.2付近である。
つまり,現在のランクと次のゲームのランクとの相関はないということを意味する。
大富豪がゲームとして成立するには
人間の感情的な部分を考慮し,それをある程度実現するルールが必要である。
(a)誰も最下位にはなりたくない。最下位になったとしたら出来るだけ早く最下位を脱したい。
(b)誰もが一番になりたい。一番になったとしたら出来るだけ長く一番であり続けたい。
この二つを実現するルールは既に存在する。
それらについて統計的確率の側面から検証してみよう。
0553127
2007/10/19(金) 20:37:110554デフォルトの名無しさん
2007/10/19(金) 23:59:320555デフォルトの名無しさん
2007/10/20(土) 00:17:550556127
2007/10/20(土) 00:18:510557127
2007/10/20(土) 00:46:36Totalの各値をゲーム回数10000で割った値をランク率,カッコ内の値をランク遷移率と呼ぶことにする。
(2)
各ゲームのディールの開始プレイヤーを最初に登録されたプレイヤーに固定し
各ゲームの最初の場の親をダイヤの3を持つプレイヤーにした場合
結果を以下に示す。
********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________
(省略されました・・全てを読むことはできません)
___________________________ Player TestE Record ___________________________
[0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 411(0.206) 407(0.204) 416(0.209) 368(0.185) 389(0.195) 1991
[1] : 377(0.193) 380(0.195) 363(0.186) 400(0.205) 432(0.221) 1952
[2] : 385(0.196) 374(0.190) 401(0.204) 407(0.207) 402(0.204) 1969
[3] : 399(0.199) 408(0.204) 362(0.181) 421(0.210) 411(0.205) 2001
[4] : 418(0.200) 383(0.184) 428(0.205) 405(0.194) 453(0.217) 2087
ディールの開始プレイヤーを最初に登録されたプレイヤーに固定した場合,
54 = 11 * 4 + 10
より最後に登録されたプレイヤーの持ち札が常に他のプレイヤーの持ち札より一枚少なくなる。
もしディールの開始プレイヤーがゲームの勝敗に影響するならば,
(1)の場合と比べてプレイヤーTestEの勝敗に偏りが生じると予想される。
この結果からはプレイヤーTestEのランク率及びランク遷移率に顕著な変化は認められない。
よってディールの開始プレイヤーの決定に偏りが生じてもゲームの勝敗に影響しないと言える。
0558127
2007/10/20(土) 15:21:54当たり前か
0559デフォルトの名無しさん
2007/10/20(土) 19:00:080560127
2007/10/20(土) 20:22:05(3)
初回ゲームのディールの開始プレイヤーを最初に登録されたプレイヤーに
初回ゲームの最初の場の親をダイヤの3を持つプレイヤーに
初回以降のゲームのディールの開始プレイヤーを前回のゲームの最下位プレイヤーの次のプレイヤーに
初回以降のゲームの最初の場の親を前回のゲームの最下位プレイヤーにした場合
結果を以下に示す。
********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________
(省略されました・・全てを読むことはできません)
___________________________ Player TestE Record ___________________________
[0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 129(0.064) 264(0.131) 429(0.214) 550(0.274) 637(0.317) 2009
[1] : 509(0.255) 433(0.217) 365(0.183) 381(0.191) 307(0.154) 1995
[2] : 458(0.232) 433(0.220) 371(0.188) 391(0.198) 319(0.162) 1972
[3] : 473(0.229) 439(0.212) 417(0.202) 373(0.180) 365(0.177) 2067
[4] : 439(0.224) 426(0.218) 390(0.199) 373(0.191) 329(0.168) 1957
この結果からはランク遷移率に明らかな偏りが認められる。
ランク0のランク遷移率は遷移先のランクと正の相関がある。
その他のランクのランク遷移率は遷移先のランクと負の相関がある。
ランク0はより高いランクへ遷移しやすくその他のランクはより低いランクへ遷移しやすいと言える。
ランク0からランク0へのランク遷移率は最も低い。
(2)の結果よりディール開始プレイヤーは結果に影響しないことが分かっている。
よって「初回以降のゲームの最初の場の親を前回のゲームの最下位プレイヤーにする」というルールが
ランク遷移率に偏りが生じた原因であると考えられる。
0561デフォルトの名無しさん
2007/10/21(日) 00:27:120562デフォルトの名無しさん
2007/10/22(月) 20:57:590563デフォルトの名無しさん
2007/10/23(火) 00:00:410564デフォルトの名無しさん
2007/10/23(火) 17:33:020565127
2007/10/24(水) 01:17:000566デフォルトの名無しさん
2007/10/24(水) 01:32:170568127
2007/10/24(水) 02:05:51大富豪ではゲーム開始時に下位ランクのプレイヤーと上位ランクのプレイヤーとの間でカード交換を行うというルールがポピュラーである。
一般的に,下位ランクのプレイヤーを不利に,上位ランクのプレイヤーを有利にするルールであり,交換の方法にも様々な種類があるが,
ここでは,ランク0がランク4に手持ちの札のうち最強の札2枚を,ランク4がランク0に手持ちの札のうち最弱の札2枚を,
ランク1がランク3に手持ちの札のうち最強の札1枚を,ランク3がランク1に手持ちの札のうち最弱の札1枚を与えることにしよう。
(4)
各ゲームのディールの開始プレイヤーをローテーション制に
各ゲームの最初の場の親をダイヤの3を持つプレイヤーに
初回以降のゲーム開始時にカード交換を行った場合
結果を以下に示す。
********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________
(省略されました・・全てを読むことはできません)
___________________________ Player TestE Record ___________________________
[0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 377(0.190) 522(0.263) 612(0.308) 338(0.170) 135(0.068) 1984
[1] : 285(0.140) 508(0.250) 558(0.275) 431(0.212) 247(0.122) 2029
[2] : 400(0.197) 434(0.214) 440(0.217) 434(0.214) 322(0.159) 2030
[3] : 509(0.261) 332(0.170) 263(0.135) 399(0.205) 448(0.230) 1951
[4] : 412(0.205) 233(0.116) 158(0.079) 349(0.174) 854(0.426) 2006
この結果からはランク遷移率に明らかな偏りが認められる。
ランク0とランク1とランク2ではランク4への遷移率が最も低く,ランク3とランク4ではランク2への遷移率が最も低い。
ランク0とランク1とランク2ではランク2への遷移率が最も高く,ランク3ではランク0への遷移率が最も高く,
ランク4ではランク4への遷移率が最も高い。
(1)の結果よりカード交換がランク遷移率に偏りが生じた原因であると考えられる。
0569デフォルトの名無しさん
2007/10/24(水) 06:42:27これがエラーメッセージです。
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
at java.util.LinkedList$ListItr.next(Unknown Source)
at $2.actionPerformed(Unknown Source)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
0570デフォルトの名無しさん
2007/10/24(水) 11:52:180571デフォルトの名無しさん
2007/10/24(水) 18:19:190572デフォルトの名無しさん
2007/10/25(木) 01:30:07を理解してない俺には無理だった
0573デフォルトの名無しさん
2007/10/25(木) 03:46:400574デフォルトの名無しさん
2007/10/25(木) 07:54:27という程度の認識はあったからじゃね?
放射線とかよく分からないけど原発は欲しいよね、素敵だね、みたいな。
0575デフォルトの名無しさん
2007/10/25(木) 08:51:550576127
2007/10/25(木) 11:32:340577127
2007/10/31(水) 20:01:52それが真実であり現実だと認めたくない心が私の甘さの元凶だ
夢で終わると分かっている夢は語る価値を持たない
目的は果たされるべきだ
0578127
2007/10/31(水) 20:04:460579デフォルトの名無しさん
2007/10/31(水) 20:07:320580127
2007/10/31(水) 20:09:140581579
2007/10/31(水) 20:21:210586127
2007/10/31(水) 22:25:530588127
2007/10/31(水) 22:45:430589デフォルトの名無しさん
2007/10/31(水) 22:54:400590127
2007/10/31(水) 22:55:370591デフォルトの名無しさん
2007/10/31(水) 22:56:020592127
2007/10/31(水) 22:57:280593579
2007/10/31(水) 23:08:530594デフォルトの名無しさん
2007/11/01(木) 23:10:21他に何か戦略ってある?
0595デフォルトの名無しさん
2007/11/01(木) 23:10:520596デフォルトの名無しさん
2007/11/01(木) 23:50:36誰にも負けない
0597デフォルトの名無しさん
2007/11/02(金) 00:48:15相手のカードが見えないので、もちろん運頼みの側面もあるのだが。
例えば手持ちカードが「899J22」とあって、今場のカードが6とかだったら、
8で切る
-> 9のペアを出す
-> 2のペアはまず他から出ないので自分で切る
-> Jを捨てて和了り
となるわけだ。
この状態の手持ちカードを、まあ「必至」と呼ぼうか。
もちろん相手の手札との絡みもあるので、確率的なものになると思う。
上の例で言えば、2のペアを持っている敵がいて、自分より先に出されてしまう場合もある。
自分以外のプレイヤーが4人いれば1/4の確率で2のペアを持っている奴がいるので、「75%の必至」みたいに自分の手札を評価できることになる。
まあジョーカーとか、ゲーム開始前のカード移譲とか色々あるのでややこしいとは思うが。
で、この考え方で行くと、プレイヤーのすべきことは、より高確率な必至を作れるカードの残し方を考えながら捨てていく、ということになる。
ということで、AIを作る場合には、残すカードを評価する評価関数を組み立ててやれば良いんじゃないかな。と酔っ払いの俺が思った。
0598デフォルトの名無しさん
2007/11/05(月) 12:41:240599デフォルトの名無しさん
2007/11/06(火) 23:45:42#define CARD_SUIT_SPADE 1
#define CARD_SUIT_HEART 2
#define CARD_SUIT_CLUB 3
#define CARD_SUIT_DIAMOND 4
typedef struct {
unsigned int suit;
unsigned int num;
} Card;
Card *newCard(unsigned int suit, unsigned int num) {
Card *card;
if(suit<1 || 4<suit) return NULL;
if(num<1 || 13<num) return NULL;
card = (Card *)malloc( sizeof(Card) );
card->suit = suit;
card->num = num;
return card;
}
疲れた。続きは明日。
0600デフォルトの名無しさん
2007/11/07(水) 00:53:27this は C++ コンパイラで怖いか? self 借りとこ。
char CARD_NUM_SYMS[] = " A234567890JQK";
char CARD_SUIT_SYMS[] = " shcd";
char getCardNumSym(Card *self) {
unsigned int num;
if(self==NULL) return '\0';
num = self->num;
if(num<1 || 13<num) return '\0';
return CARD_NUM_SYMS[num];
}
getCardSuitSym(Card *self) {
unsigned int suit;
if(self==NULL) return '\0';
suit = self->suit;
if(suit<1 || 4<suit) return '\0';
return CARD_SUIT_SYM[suit];
}
0601デフォルトの名無しさん
2007/11/07(水) 01:02:420602デフォルトの名無しさん
2007/11/08(木) 21:35:22typedef unsigned int Suit;
typedef unsigned int Num;
void putCard(Card *self) {
printf( "%c%c", getCardSuitSym(self), getCardNumSym(self) );
}
char *getCardSym(Card *self, char buffer[], size_t bufsize) {
unsigned int i;
if(self == NULL) return NULL;
if(bufsize < 2) return NULL;
buffer[0] = getCardSuitSym(self);
buffer[1] = getCardNumSym(self);
for(i=2; i<bufsize; i++) buffer[i] = '\0';
return buffer;
}
0603127
2007/11/09(金) 19:49:53(5)
初回ゲームのディールの開始プレイヤーを最初に登録されたプレイヤーに
初回ゲームの最初の場の親をダイヤの3を持つプレイヤーに
初回以降のゲームのディールの開始プレイヤーを前回のゲームの最下位プレイヤーの次のプレイヤーに
初回以降のゲームの最初の場の親を前回のゲームの最下位プレイヤーに
初回以降のゲーム開始時にカード交換を行った場合
結果を以下に示す。
********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________
(省略されました・・全てを読むことはできません)
___________________________ Player TestE Record ___________________________
[0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 236(0.121) 401(0.205) 640(0.327) 461(0.236) 217(0.111) 1955
[1] : 173(0.087) 427(0.214) 665(0.333) 481(0.241) 253(0.127) 1999
[2] : 407(0.201) 450(0.222) 404(0.199) 408(0.201) 357(0.176) 2026
[3] : 578(0.294) 405(0.206) 194(0.099) 328(0.167) 463(0.235) 1968
[4] : 560(0.273) 317(0.154) 123(0.060) 290(0.141) 762(0.371) 2052
(以下略)
0604127
2007/11/09(金) 21:19:35下位ランクは中間ランクまでは容易に上がれ,そこから先は運次第。
上位ランクは上位であり続けるか下位に落ちるかのギャンブル。
そこで思い出して欲しい。
このゲームが生まれた1970年代の日本を。
当時は高度経済成長期から安定成長期への移行時期で,
終身雇用制度に基づく一億総中流といった考えが強かった時代だ。
成果主義も格差社会もまだ一般には登場していない。
これまでの実験結果によって明らかになった,
たった2種類のルールによってもたらされるゲーム性は,
そうした時代背景を反映しているとは言えないだろうか。
0605デフォルトの名無しさん
2007/11/10(土) 07:09:51多くの新しい知を混ぜるためにage
0606127
2007/11/10(土) 07:24:54誰もいなければ誰を傷つけよう
誰もいなければ誰を滅ぼそう
0607599
2007/11/10(土) 07:31:43プログラマならコードで語るもんだぜ。
と言うわけで 599 からコードを貼りつづける Java房な俺。
typedef struct {
size_t length;
Card *cards[256];
} Deck;
Deck *freeDeck(Deck *deck) {
unsigned int i;
for(i=0; i<256; i++) freeCard(deck->cards[i]);
free(deck);
return NULL;
}
Deck *newDeck() {
unsigned int i;
Deck *deck;
deck = (Deck *)malloc( sizeof(Deck) );
if(deck == NULL) return NULL;
deck->length = 0;
for(i=0; i<256; i++) deck->cards[i] = NULL;
return deck;
}
この後は Player と Game も構造体にする予定。
そーいや、1ゲームを Game にするとして、大貧民全体としての
何ゲームかセットにしたものは何て呼べば良いんだろ。
0608デフォルトの名無しさん
2007/11/10(土) 09:21:42printf(" ∩_\n");
printf(" 〈〈〈 ヽ\n");
printf(" 〈⊃ }\n");
printf(" ∩___∩ | |\n");
printf(" | ノ ヽ ! !\n");
printf(" / ● ● | /\n");
printf(" | ( _●_) ミ/ <こいつ最高にアホ\n");
printf(" 彡、 |∪| /\n");
printf("/ __ ヽノ /\n");
printf("(___) /\n\n"),
}
0609デフォルトの名無しさん
2007/11/10(土) 12:12:49オーケー、その案採用するぜ。まだ先だけど。
Card *pushCardToDeck(Deck *self, Card *card) {
if(self->length > 255) return NULL;
self->cards[self->length] = card;
self->length++;
return card;
}
Card *popCardFromDeck(Deck *self) {
Card *card;
if(self->length < 1) return NULL;
self->length--;
self->cards[self->length] = NULL;
return card;
}
Deck *makeDeck() {
Suit s;
Num n;
Deck *deck;
deck = newDeck();
if(deck == NULL) return NULL;
for(s=1; s<=4; s++) {
for(n=1; n<=13; n++) {
Card *c = newCard(s,n);
if(c == NULL) return freeDeck(deck);
if(pushCardToDeck(deck, c) == NULL) return freeDeck(deck);
}
}
return deck;
}
0610デフォルトの名無しさん
2008/03/14(金) 10:33:400611デフォルトの名無しさん
2008/03/14(金) 10:54:170613デフォルトの名無しさん
2008/05/12(月) 06:48:037ならべ、大富豪(大貧民)、フリーセル、ソリティアくらい作ろうぜ?
0614デフォルトの名無しさん
2008/05/12(月) 15:10:52ガンバレ!
0615デフォルトの名無しさん
2008/05/12(月) 17:23:56でもオブジェクト作りまくってるから
C言語には移植しづらいだろうなあ。
0616デフォルトの名無しさん
2008/05/12(月) 17:39:10大富豪はやってみたい。まずは最後に2人になった時点の読み切りを考えると面白そう。
0617デフォルトの名無しさん
2008/05/12(月) 18:58:19大富豪の思考ルーチンを作るのか
0618127
2008/05/12(月) 23:55:26599氏は元気かな
0619127
2008/05/14(水) 06:28:570620127
2008/05/17(土) 21:27:44自分で追い出しておいて何を今更というか
まさにそのとおりなんだけど
さてそろそろ再開するかな
0621デフォルトの名無しさん
2008/05/21(水) 13:46:070622127
2008/05/21(水) 23:52:440623127
2008/05/22(木) 00:13:59「実はまだその辺にいるのであった」
だな
0624デフォルトの名無しさん
2008/05/22(木) 00:16:49二階じゃないんだから。
0625599
2008/05/29(木) 00:24:24すまない。飽きた。
0626デフォルトの名無しさん
2008/06/29(日) 06:19:48コンピュータにショボイけどA.I機能を持たせて対戦ゲームを
作れそうな気がしてきた!
今、構造体にカードのスーツと数字を入れて、シャッフルするところまででけた!
0627デフォルトの名無しさん
2008/06/29(日) 08:15:36振り分けるところまで出来た!さぁ、ナニ作ろうか?
0628デフォルトの名無しさん
2008/06/29(日) 08:21:04ちょっとAIのアイディアがあるんで、思考エンジン部だけ簡単に追加できるようにしておいてくれ。
0629デフォルトの名無しさん
2008/06/29(日) 08:36:20徹夜明けなんで寝まつ(^^; すまそ。
0630デフォルトの名無しさん
2008/06/30(月) 00:18:52書き直しまつ
0631デフォルトの名無しさん
2008/06/30(月) 17:26:130632127
2008/07/12(土) 23:55:35モチベーションを維持するのって案外難しいね
0633デフォルトの名無しさん
2008/07/13(日) 04:43:15ゲームを作るやる気を維持するためには 3バルカン
http://pc11.2ch.net/test/read.cgi/gamedev/1148182093/
0634デフォルトの名無しさん
2008/07/23(水) 11:01:50http://www.polyphony.co.jp/recruitment/r02.html
超優秀じゃなきゃ無理だけどw
3Dなら数学の研究者とかね
0635デフォルトの名無しさん
2008/07/23(水) 14:08:15Cじゃなきゃ駄目か?
0636デフォルトの名無しさん
2008/11/26(水) 09:39:040637デフォルトの名無しさん
2008/11/27(木) 12:22:48やってみるか
0638637
2008/11/30(日) 23:30:31とりあえず、データ型は3から10、ジャック、クイーン、キングを整数の3から12として
Aと2は整数の13と14でいいか
強さの比較が楽で
ペアとかトリプルとか革命とか階段とか8切りとかどうやって処理させようか
完成するまでだれも来なかったりしてw
0639デフォルトの名無しさん
2008/11/30(日) 23:38:370640637
2008/11/30(日) 23:49:24データ型、文字列の操作、構造体、関数、条件分岐、構造化やモジュール化、デバッグなどが全部学べる
0641637
2008/11/30(日) 23:53:59あれ?革命したあとでもジョーカーが最強だっけ?
0642デフォルトの名無しさん
2008/11/30(日) 23:56:310643デフォルトの名無しさん
2008/12/01(月) 00:26:110644デフォルトの名無しさん
2008/12/01(月) 00:37:100645デフォルトの名無しさん
2008/12/01(月) 04:49:350646デフォルトの名無しさん
2008/12/02(火) 02:01:44そんな話は 昔 >231 とかにあったよ
0647デフォルトの名無しさん
2008/12/02(火) 08:13:440648デフォルトの名無しさん
2008/12/02(火) 09:30:05そんな話が>>127にあったな・・・
0649デフォルトの名無しさん
2008/12/02(火) 14:04:240650デフォルトの名無しさん
2008/12/02(火) 22:20:43構造体と、構造体を操作する為の関数くらいの構成で。
0651デフォルトの名無しさん
2008/12/02(火) 22:26:150652デフォルトの名無しさん
2008/12/02(火) 23:10:590653デフォルトの名無しさん
2008/12/03(水) 18:43:540654デフォルトの名無しさん
2008/12/07(日) 22:22:550655デフォルトの名無しさん
2008/12/07(日) 23:23:560656デフォルトの名無しさん
2008/12/08(月) 06:16:370657デフォルトの名無しさん
2008/12/19(金) 15:10:13誰か暇な人教えてください
0658デフォルトの名無しさん
2008/12/19(金) 15:42:53Private Function isStreat(ByVal card() As Card) As Boolean
Dim sortedCard(4) As Integer
sortedCard(0) = card(0).Number
sortedCard(1) = card(1).Number
sortedCard(2) = card(2).Number
sortedCard(3) = card(3).Number
sortedCard(4) = card(4).Number
Array.Sort(sortedCard)
If sortedCard.Contains(13) And sortedCard.Contains(1) Then
If sortedCard(0) = 1 Then
sortedCard(0) = 14
End If
If sortedCard(1) = 2 Then
sortedCard(1) = 15
End If
If sortedCard(2) = 3 Then
sortedCard(2) = 16
End If
If sortedCard(3) = 4 Then
sortedCard(3) = 17
End If
Array.Sort(sortedCard)
End If
If sortedCard(0) + 1 = sortedCard(1) And sortedCard(1) + 1 = sortedCard(2) And sortedCard(2) + 1 = sortedCard(3) And sortedCard(3) + 1 = sortedCard(4) Then
Return True
End If
Return False
End Function
0659デフォルトの名無しさん
2008/12/20(土) 19:33:43K,A,2,3,4 はストーレートぢゃない
(ローカルルールなのかな?)
0660デフォルトの名無しさん
2008/12/21(日) 19:03:49>
> ストレート(およびストレートフラッシュ)では、AはKとも2ともつなげる事が出来る。
> すなわちA-2-3-4-5もA-K-Q-J-10もストレートとみなされる。
> しかしQ-K-A-2-3のようにK-A-2を含むものはストレートとはみなされない。
意外ト難シイノネ
0661デフォルトの名無しさん
2008/12/21(日) 19:08:07> ストレート( straight )
> 5枚連続カード
> 例:5s 4d 3h 2s Ac
> なお、AとKは、連続しているとはみなされません。
> (例外として、AKQJT は、ストレートとみなされます。)
> 例えば、4h 3s 2d As Ks は、ストレートではありません。
か。どちらにしてもK-A-2は繋がらないみたいだな。
0662デフォルトの名無しさん
2008/12/21(日) 19:10:24回りくどい言い方だが、要するに普通のルールってことだよね。
0663デフォルトの名無しさん
2008/12/21(日) 19:16:24このスレでは他の言語で作る奴はその時点でルール違反なのだ
0664デフォルトの名無しさん
2008/12/21(日) 19:20:11その言語で組む事くらいは問題ないですよね?
0665デフォルトの名無しさん
2008/12/21(日) 19:31:18C言語でトランプゲームを作ったとは言えないだろう
せいぜい実装済みオプションのオンオフ程度が限界ではないか
0666デフォルトの名無しさん
2008/12/21(日) 19:34:53C++で組みたいぜ。
0667デフォルトの名無しさん
2008/12/21(日) 19:57:00そして楽を正当化する経済的な理由もある
ここはそういう世俗的な合理性に歯向かうスレです
プログラミングは苦行であり
他の言語を使って楽をしようとする不信心者は戒められなければなりません
0668デフォルトの名無しさん
2008/12/21(日) 20:31:53今時のやつって規模も何も考えずにデザパタとか適用しようとするの?
0669デフォルトの名無しさん
2008/12/21(日) 20:33:58その構造体を操作する関数の名前に
構造体名を付けたりすることがよくあるが、
関数名が長くなって仕方が無い。
0670デフォルトの名無しさん
2008/12/22(月) 13:27:52オブジェクト指向だからと言って、必ずデザパタを使うワケではないぞ。
0671デフォルトの名無しさん
2008/12/22(月) 21:09:340672デフォルトの名無しさん
2009/02/18(水) 12:07:420673476
2009/02/18(水) 13:23:57void tramp(void)
{
int x=0;
printf("select Number:");
scanf("%d",&x);
if(x>=1&&x<=9){
printf("\x1b[0m");
printf("\n");
printf("\x1b[37m --------\n");
printf("|%d |\n",x);
printf("| |\n");
printf("| :) |\n");
printf("| |\n");
printf("| %d |\n",x);
printf(" --------\n");
printf("\x1b[0m");
}else
{
printf("1~9 Input\n");
}
}
int main(void)
{
int x;
for(;x!=EOF; x++)
{
tramp();
}
return 0;
}
0674476
2009/02/18(水) 13:24:220675デフォルトの名無しさん
2009/02/19(木) 00:51:03ただしtrumpの英語での意味は切り札のことで
日本語で一般に言うところのトランプはplaying cardsもしくは単にcardsという
0676デフォルトの名無しさん
2009/03/20(金) 22:24:43VB使ったことないのでCで表現すると
while(i < 4){
next = hand[i]+1
if(hand[i+1] == next){
i++;
} else {
break;
}
}
if(i >= 4) printf("ストレート");
仕様
hand[添え字]・・・手札
next・・・i+1枚目の手札の数値
ストレートであると判断された場合、単純に「ストレート」の文字列を出力するプログラムだけど、絵柄の判定は俺の持ち合わせる知識じゃ無理だ
フラッシュの判定ができるならできるはずだが
0677デフォルトの名無しさん
2009/03/20(金) 22:25:31訂正
絵柄の判定→絵柄の表現
0678デフォルトの名無しさん
2009/03/23(月) 13:17:060679デフォルトの名無しさん
2009/04/01(水) 15:03:250680デフォルトの名無しさん
2009/04/01(水) 17:41:32>C/C++の宿題片付けます 124代目
time(NULL)は秒単位だから、一秒以内に何度も srand(time(NULL));したら同じ疑似乱数にになる。
srand(time(NULL));はプログラムの最初に一回だけすれば良い。
何度も言われているけど、変なプログラム書いてないで、入門書を読み直すレベル。
0681デフォルトの名無しさん
2009/04/01(水) 17:49:560682デフォルトの名無しさん
2009/04/02(木) 13:56:12質問者より先に回答者が誘導されただけ。
0683デフォルトの名無しさん
2009/04/02(木) 14:00:10http://pc12.2ch.net/test/read.cgi/tech/1235927586/568
>宿題じゃないなら続きはこっちでやってくれ
0684デフォルトの名無しさん
2009/04/02(木) 17:18:16thxです。
どういうのがいい書き方なのかいまだに分かってないんで今度図書館で借りてこようと思う。
0685デフォルトの名無しさん
2009/04/02(木) 17:59:17もともとrand()は疑似乱数を発生させる。
発生する数値は毎起動ごとに同じパターンになる。
そこで始まりをずらすためにsrand()を呼ぶ。
そこで同じ数字を渡してたらやっぱり毎回同じパターンになるので
time()で最初の一回だけ現在時刻を渡してる。これなら秒さえかわれば違うパターンになるからな。
ゲームによっては数字を入力すると同じ配列になるやつがあるけど
それはその数字を直接的にしろ間接的にしろその数値をsrandに渡してる。
0686デフォルトの名無しさん
2009/04/27(月) 09:16:28浮動少数点数使うと激遅な環境ではいつも悩む
0687デフォルトの名無しさん
2009/05/20(水) 07:20:020688デフォルトの名無しさん
2009/05/26(火) 00:51:11javaとかC#なら、random.nextint(int max)で最初っから範囲取得できるけど。
0689デフォルトの名無しさん
2009/09/09(水) 13:27:48ばらけてほしいゲームだとダメぽ
俺は線形合同法避けるだけだけど
人によっては%も嫌がる
0690デフォルトの名無しさん
2009/09/15(火) 21:48:34のが正しい気がする
0691デフォルトの名無しさん
2009/09/16(水) 13:02:560692デフォルトの名無しさん
2009/09/17(木) 12:16:17time_tがunsigned intより大きい型の環境では、
警告回避のためにキャストが必要かもしれない。
0693デフォルトの名無しさん
2009/12/09(水) 02:13:060694デフォルトの名無しさん
2009/12/11(金) 20:02:560695デフォルトの名無しさん
2010/05/21(金) 09:33:310696デフォルトの名無しさん
2010/06/13(日) 23:27:350697デフォルトの名無しさん
2010/06/20(日) 12:22:350698デフォルトの名無しさん
2010/07/02(金) 10:10:520699デフォルトの名無しさん
2010/07/04(日) 10:24:160700デフォルトの名無しさん
2010/07/04(日) 13:07:280701デフォルトの名無しさん
2010/07/04(日) 21:22:01賭け方とか本式の奴。
自分以外はAIで。
ディーラーは巨乳で80万ポリゴンくらいのリアルなバニーちゃんがいい。
あそこの毛の処理が甘くてかすかにはみだしてると最高!
0702デフォルトの名無しさん
2010/07/04(日) 22:59:25みんなもがんばろうか
http://codepad.org/4t7i0wfr
0703デフォルトの名無しさん
2010/07/04(日) 23:01:26俺の作ったライブラリにバニーガールやキャンギャルを出力する
ライブラリあるよ。
0704デフォルトの名無しさん
2010/07/04(日) 23:39:07バニガは同意するが、
その次の一文はひくわ…
0705デフォルトの名無しさん
2010/07/05(月) 10:09:560706702
2010/07/05(月) 22:06:08おまえらただのバニーガール好きだったか・・・
0707デフォルトの名無しさん
2010/08/10(火) 10:27:050708デフォルトの名無しさん
2010/09/10(金) 01:38:21https://sites.google.com/site/orzmnok/home/programs
言うまでもなくCUI
0709デフォルトの名無しさん
2010/09/10(金) 21:09:350710デフォルトの名無しさん
2010/09/29(水) 01:22:140711デフォルトの名無しさん
2010/09/29(水) 11:53:530712デフォルトの名無しさん
2010/10/23(土) 20:42:23おまっ 変なもん公開してて怪しげだぞ
0713デフォルトの名無しさん
2011/07/09(土) 09:15:07.300714デフォルトの名無しさん
2012/06/19(火) 15:30:00.710715uy
2012/06/20(水) 15:53:28.97今更、時代遅れ言語であるC言語で
こういうゴミをこれ以上量産すんなっつってんのに
聞かねーバカが後を絶たない
お前らの上げてるソースで迷惑してる層を考えろ
0716デフォルトの名無しさん
2012/06/21(木) 04:22:07.17まあ俺は絶対Cではやりたくないけどね
0717デフォルトの名無しさん
2012/06/21(木) 15:18:09.23ん? キックオフ2007年スレか。 確かに、当時、OOCはあまりまともな例が無かったな。 無理も無いか。
0718uy ◆QIYIaM7QCo
2012/06/22(金) 01:51:19.060719デフォルトの名無しさん
2012/06/24(日) 23:51:27.26コンソール用ソリティアとかでもいい?
0720uy
2012/06/30(土) 13:33:05.49意味がわかんねえよ
作りたければ勝手にやれ
誰も興味ないし
なんで時代遅れのC言語で、しかもCUIで作ろうとするのかわけわからんよw
バカなの?
二度繰り返す
作りたければ勝手にやれ
作りたければ勝手にやれ
作る気があれば1時間で作れるネタなのに
聞いてくんなうざい
一生C言語やってろよ
0721デフォルトの名無しさん
2012/07/01(日) 17:53:04.33■ このスレッドは過去ログ倉庫に格納されています