C言語でトランプゲームを作りたい at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
07/09/16 06:46:13
ばば抜き、大貧民、いろいろあるけどこういうのってほとんどがJavaとかだよね。
CUIでもいいからみんなで作ろう

2:デフォルトの名無しさん
07/09/16 07:18:51
            ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /

3:デフォルトの名無しさん
07/09/16 08:42:29
>>1
俺はトランプ嫌いだから作らないけどお前は頑張れ。
決めたからには最後までやり遂げて見せろ。

4:デフォルトの名無しさん
07/09/16 08:54:45
簡単なところでポーカーの役判定とかから始めたら?

5:デフォルトの名無しさん
07/09/16 10:25:15
スピードで

6:デフォルトの名無しさん
07/09/16 12:54:53
もっと簡単なじゃんけんから。それを発展してあっち向いてホイを。

7:デフォルトの名無しさん
07/09/16 13:13:47
あみだくじでどうだ

8:デフォルトの名無しさん
07/09/16 13:26:04
あみだなら入力に関係なく結果そのものをrnd()で決定できるな

9:デフォルトの名無しさん
07/09/16 13:28:05
>>6
それ面白そう。
デジカメか何かで取り込んだ人間の顔写真から
顔の向きを判断するのが勉強になりそうだ。

10:デフォルトの名無しさん
07/09/16 13:39:09
すみません
ポーカーの判定を作ってみたのですが止め方がわからないので教えて貰えますか

11:デフォルトの名無しさん
07/09/16 13:42:21
ソース見せな

12:デフォルトの名無しさん
07/09/16 13:53:46
#include<stdio.h>
#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++;
}
//つづく

13:デフォルトの名無しさん
07/09/16 13:54:20
//つづき
if(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;
}

14:デフォルトの名無しさん
07/09/16 13:55:46
>>12-13ですが、表示が流れてしまって確認ができません
どうやったらとまりますか?

15:デフォルトの名無しさん
07/09/16 13:58:57
while(1)で無限ループしてるからだろ
forループにして適当な回数でやめればいいじゃん

16:デフォルトの名無しさん
07/09/16 15:07:02
役判定のレベルに比べて無限ループに気づかないとか、差が激しすぎんだろw
他人のソースの丸写しか?

17:デフォルトの名無しさん
07/09/16 15:57:12
D貧民とかあるでよ

18:デフォルトの名無しさん
07/09/16 16:49:41
CUIでいいから大富豪作りたいな。地方によっては大貧民やド貧民とか言うらしいな

19:デフォルトの名無しさん
07/09/16 17:16:36
とりあえずこのローカルルールを全部実装してくれ
Wikipedia項目リンク

20:デフォルトの名無しさん
07/09/16 18:17:49
CUIはきついな。cursesライブラリとか駆使するのか?

21:デフォルトの名無しさん
07/09/16 18:25:00
>>20
出力はこんな感じで良いんじゃないの。難しい事は考えないで printf() だけで充分。

あなたの手番です...
手持ちのカード: [1:H-6],[2:H-J],[3:S-K],[4:JKR]
どのカードを切りますか?(1-4): 2
Heart の Jack で宜しいですか?(y or n): y
Heart の Jack を切りました

以下ry

22:デフォルトの名無しさん
07/09/16 18:27:24
ネット対戦とか出来ると楽しそうだよね。

23:デフォルトの名無しさん
07/09/16 18:30:33
なんでゲームって単語がスレタイにつくと、ム板とは思えないほど低レベルなスレになるんだろう

24:デフォルトの名無しさん
07/09/16 18:34:08
ム板は割りと全般的に低レベルかと…
まあ気にすんな

25:デフォルトの名無しさん
07/09/17 00:34:20
最初はカードをランダムで配るだな

26:デフォルトの名無しさん
07/09/17 00:52:17
次は配ったカードをソートだな

27:デフォルトの名無しさん
07/09/17 00:55:20
プレイヤー人数は?何人でするか。人対CPU。CPU対CPUとか

28:デフォルトの名無しさん
07/09/17 01:29:09
まぁ何でもいいから一個ずつ書いていけばいいんじゃないか?

カードをランダムで配る関数、ソートする関数とか

29:デフォルトの名無しさん
07/09/17 02:57:05
C言語初めて一週間の俺がやろうと思ったが無理だった。頭のいい人教えてくれ

30:デフォルトの名無しさん
07/09/17 03:21:23
じゃあとりあえずプレイヤーは二人、んでカードをランダムに二人で配るってのは?面倒だからジョーカー抜きで

31:デフォルトの名無しさん
07/09/17 03:57:17
どうすんの?二人でやっても4種類のカードを13枚ずつ、ランダムに重複せずに分けるとか俺には無理ぽ

32:デフォルトの名無しさん
07/09/17 04:54:45
現実をシミュレートすると重複しないようにカードを排除することになるが、
とりあえずランダムに求めておいて重複していればまた求める
一応はこれで十分だろう

33:デフォルトの名無しさん
07/09/17 05:03:32
>>31
カードを配列に入れて先頭から順にランダムに選んだ要素とスワップしてシャッフル。
あとは配列の先頭から使いたいだけ使えばいい。

34:デフォルトの名無しさん
07/09/17 05:35:31
とりあえず、二人で勝負、革命とかルールなしで、大きい数字を交互に出していく、どちらもだせなければ
その場をきる。先にカードがなくなったほうが勝ち。これを作ろうとする猛者はいる?

35:デフォルトの名無しさん
07/09/17 05:40:05
>>34
CUIで大富豪作ればいいのか?

36:デフォルトの名無しさん
07/09/17 06:13:44
             ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <<<1は最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /

37:デフォルトの名無しさん
07/09/17 07:04:34
今のところ、カードは数値だけで良いの?

38:デフォルトの名無しさん
07/09/17 07:18:05
URLリンク(www.freewebs.com)

39:デフォルトの名無しさん
07/09/17 12:18:27
>>35 まぁ最初はそれからじゃないか?あとからいろいろと機能を付け加えれば

40:デフォルトの名無しさん
07/09/17 12:42:54
できるやつは大富豪くらいなら一日あればできるのかな


41:デフォルトの名無しさん
07/09/17 12:58:28
ルールどおりに動く程度のものなら1日あればできるね
つーか大富豪ってローカルルールが多すぎてどれが標準的かよくわからん

42:デフォルトの名無しさん
07/09/17 13:00:07
とりあえず細かいルール考えずに>>34を実装してみようか

43:デフォルトの名無しさん
07/09/17 13:02:35
おう
がんばれ

44:デフォルトの名無しさん
07/09/17 13:17:18
cursesライブラリ使ってつくって。

45:デフォルトの名無しさん
07/09/17 13:20:16
URLリンク(www.tnlab.ice.uec.ac.jp)

このスレで応募してみるとか

46:デフォルトの名無しさん
07/09/17 13:20:53
まぁちょっと面倒だけど大富豪くらいならfor文や配列ができればいけそうじゃない?

47:デフォルトの名無しさん
07/09/17 13:35:22
>>45 ネットワークなんかはあとからでも

48:まずはここから
07/09/17 13:36:10
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 */

でよい?


49:いつもここから
07/09/17 13:40:56
あ、rankの後ろにごみ入っちゃったw

あと、表示は
[SA][H10][DJ][CQ]...
- 00 -- 01 -- 02 -- 03 -...

入力は
04,12,...

でおk?

50:デフォルトの名無しさん
07/09/17 14:06:19
とりあえずそれを二人にランダムで配りそれをソートだな。昇順並び替えかな

51:デフォルトの名無しさん
07/09/17 14:36:11
> 昇順並び替え

"3","4","5","6","7","8","9","10","J","Q","K","A","2"
の順がいいと思われ

52:デフォルトの名無しさん
07/09/17 14:45:01
お、忘れてた。3が一番弱いんだっけw革命は後回しにそれでいってみるか?

53:デフォルトの名無しさん
07/09/17 14:49:41
64bit の変数一個用意して、1 bit 目が立っていたらハートのエースを、
53bit 目が立っていたらジョーカーを持っている事にすればソート不要。

54:デフォルトの名無しさん
07/09/17 15:00:18
for文や配列くらいしかワカラナイ俺にも作れるかな

55:デフォルトの名無しさん
07/09/17 15:13:12
スペード 0
ハート 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


56:つまり
07/09/17 15:24:02
カードの番号 0〜51 を 13 で割った
商 0〜3
余 0〜12
を使う

・表示
・ソート(大小判定)  ...は 0〜12 のままじゃダメだなw

57:デフォルトの名無しさん
07/09/17 15:24:11
絵柄に2bit
A〜Kで13bit
ジョーカーで1bit

58:デフォルトの名無しさん
07/09/17 15:26:43
とりあえず二人にカードを分けてそのカードを表示するってのは?とりあえず死合はまだで

59:デフォルトの名無しさん
07/09/17 15:30:16
トランプはカードに重複が無いから、プレイヤー 1 人辺り 53bit あれば十分だよ

60:デフォルトの名無しさん
07/09/17 15:35:57
そこまでして節約する必要なんてないだろ

61:デフォルトの名無しさん
07/09/17 15:39:35
節約と言えば、ここ↓の過去スレに色々あった希ガス

七行プログラミング part5
スレリンク(tech板)

62:とりあえず
07/09/17 17:03:17
#include <stdio.h>
#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;
}

配るまで

63:デフォルトの名無しさん
07/09/17 17:40:32
配るまではまぁなんとかだな。そういうや先攻後攻を決めるにはどうすればいい?0か1かで判断?

64:デフォルトの名無しさん
07/09/17 18:46:15
」・、ヲ

65:デフォルトの名無しさん
07/09/17 19:00:24
大富豪でカードを作る。ジョーカーつき。二人でやってルールは革命くらいでいいかな。作れるか?

66:デフォルトの名無しさん
07/09/17 19:30:54
乱数はrandでいいと思う?
もっと高精度なの使う?

67:デフォルトの名無しさん
07/09/17 19:34:08
いいんじゃないか?偏りがあるとか聞くけどそこまで精度なのは求めてないかと

68:デフォルトの名無しさん
07/09/17 20:45:51
暗号用とか技術用だと乱数機工夫した方が良いが
ゲーム程度なら要らないかと
ゲーム向きの乱数生成法としては
時計orタイマーをキーにするって方法もある
ユーザ入力のタイミング次第で結果が変わるので、お手軽かつ偏りが少ない

69:デフォルトの名無しさん
07/09/17 21:18:24
6人プレイの革命有り、ジョーカーのワイルドカードありで造った事有るなぁ。

70:デフォルトの名無しさん
07/09/17 21:32:09
C++じゃマズいんだっけか

71:デフォルトの名無しさん
07/09/17 21:50:38
Cでだからな。表示もprintfだけでも何とかなるぽ。ちょっと面倒だけど

72:デフォルトの名無しさん
07/09/17 22:30:23
int pos=(i+1.0) * rand() / (RAND_MAX + 1.0);

これてどういうこと?

73:デフォルトの名無しさん
07/09/17 23:01:51
rand() / (RAND_MAX + 1.0)ってのは0以上1未満の数を一様乱数で返す

だっけ?面倒だろうけどコメントつけていってw俺にもサパーリ

74:デフォルトの名無しさん
07/09/17 23:14:50
宿題スレでも見とけ

75:デフォルトの名無しさん
07/09/17 23:28:10
(i+1.0) * rand() / (RAND_MAX + 1.0) は rand() % (i+1) の高精度版だと思っとけばOK

76:デフォルトの名無しさん
07/09/17 23:28:51
// pos は 0 以上 RAND_MAX 以下の整数
pos = 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()の値によっては、乗算をした瞬間にオーバーフローする可能性がある。
上に書いたように乗算を後からやれば問題ない。

77:デフォルトの名無しさん
07/09/17 23:40:34
(i+1.0) * rand() / (RAND_MAX + 1.0);ってのは0以上i+1未満の数をランダムで返すってこと?

78:デフォルトの名無しさん
07/09/17 23:53:53
>>77
そういうこと。
整数なのでi+1未満ってことは、i以下ってこと。

79:デフォルトの名無しさん
07/09/18 03:10:04
作って思ったこと。全部mainに入れ込んでた俺は明らかに初心者。しかもカードを小さい順から出すってのがわからない

80:デフォルトの名無しさん
07/09/18 06:24:49
手札を番号順にソート
パス?=真
番号の小さいカードから順に見て{
   場札より大きいなら{
      カードを場に出す
      パス?=偽
   }


81:デフォルトの名無しさん
07/09/18 06:46:03
あ〜…カード出した時点でループ抜けなきゃマズいな

82:デフォルトの名無しさん
07/09/18 07:00:18
その処理全体を関数にして
出したらそこでreturnすればフラグは要らないな
そうすれば、ループ回りきった=出せない、なのだから

83:デフォルトの名無しさん
07/09/18 07:55:23
手札ソートについては、あらかじめ3〜K,1,2の順をデフォルトにしとけばいいじゃん
何も考えずに1〜Kの順で配列にするから、順番入れ替えの必要があるわけで

84:デフォルトの名無しさん
07/09/18 08:04:17
手札って強さの順にソートする必要あるのか?

85:デフォルトの名無しさん
07/09/18 08:14:40
見易さのために決まってるでしょ。

86:デフォルトの名無しさん
07/09/18 08:16:31
1から13の順じゃ駄目なのか?

87:デフォルトの名無しさん
07/09/18 08:17:18
比較関数はソート以外にも使える

88:デフォルトの名無しさん
07/09/18 09:15:34
強さ順にソートにすれば、いくつかの処理が簡単に書けるんじゃね?

89:デフォルトの名無しさん
07/09/18 13:31:46
2と3は繋がらないしね

90:デフォルトの名無しさん
07/09/18 15:03:59
出力は>>21あたりが見やすそうだな

91:デフォルトの名無しさん
07/09/18 15:32:42
そう思うんならそういう風なコードをここに書けば?

92:デフォルトの名無しさん
07/09/18 16:34:07
俺ならスートは小文字

93:デフォルトの名無しさん
07/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)


94:クソゲー
07/09/18 20:55:41
カードは一枚ずつ選択。革命などなし。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

95:デフォルトの名無しさん
07/09/18 21:02:36
>>94
CPUはこっちが出したスートしかださないのか

96:デフォルトの名無しさん
07/09/18 21:52:10
ありゃ。そういうルールじゃなかったっけ。くそげー

97:デフォルトの名無しさん
07/09/18 23:01:26
>>93 一番上が見やすい

98:デフォルトの名無しさん
07/09/18 23:02:42
for文や配列くらいしかワカラナイ俺でも大富豪ってできる?

99:デフォルトの名無しさん
07/09/18 23:16:13
できんことはないと思うがポインタとかそういうの分かってたほうが短くかけるかも

100:デフォルトの名無しさん
07/09/18 23:36:14
そんな初心者だが俺もやってみる。ほんとワカラナイことだらけだから変なプログラムやこれはおかしいって
やつも貼り付けると思うけど教えてくれ

101:デフォルトの名無しさん
07/09/18 23:42:00
そういうことはコードを張ってから言え。

102:デフォルトの名無しさん
07/09/19 00:14:08
今はとりあえずカードをスペード、ハート、クローバー、ダイヤを13枚ずつランダムに表示するようなものを作ってる。


103:デフォルトの名無しさん
07/09/19 01:11:26
一応やってみました。でもただランダムに表示するだけ。ポインタとかも使ってません。
突っ込みどころ満載とはおもいますがお願いします。

URLリンク(kansai2channeler.hp.infoseek.co.jp)


104:とりあえず
07/09/19 01:37:06
> 62 をソートしてみた
static 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;
}

105:デフォルトの名無しさん
07/09/19 01:38:44
>>103>>104の違いに吹いたw

106:デフォルトの名無しさん
07/09/19 01:40:06
とりあえずこっそりと そぉ〜っと ソート してみたんですが、気づきましたか?


107:103
07/09/19 01:43:59
やっぱりポインタとかは必要ですか・・・

108:デフォルトの名無しさん
07/09/19 01:45:39
> 107
'関数'化だな、まずは。

109:デフォルトの名無しさん
07/09/19 01:46:50
>>107
俺の経験によると、お前は伸びるタイプだな
がんばれ

110:デフォルトの名無しさん
07/09/19 01:47:31
グローバル領域に
int s[13],h[13],c[13],d[13];
だろ?伸びる兆しが見えん。

111:デフォルトの名無しさん
07/09/19 01:49:10
>>110
まだ、うまいへたを論じるレベルじゃない

112:デフォルトの名無しさん
07/09/19 01:50:59
> 110
まてまて
それを2次元配列にすれば→ int card[4][13];
そんなに悪くはないぞ

113:デフォルトの名無しさん
07/09/19 01:52:06
...C言語で「2次元」配列は無いわな orz

114:デフォルトの名無しさん
07/09/19 01:53:10
ポインタ知らなきゃグローバル領域に置くほかない罠

115:103
07/09/19 02:08:03
すいませんお風呂入ってました。

関数化にポインタに二次元配列ですか・・・
まだカードを配るところにすらいってないのに・・・

お風呂上りに麦茶一気飲みしたらお腹が痛くなってきたので寝ます。

また来ますのでそのときはアドバイスよろしくお願いします

116:デフォルトの名無しさん
07/09/19 02:11:26
お大事にw

117:デフォルトの名無しさん
07/09/19 02:15:15
その麦茶、腐ってねーか?

118:デフォルトの名無しさん
07/09/19 02:22:27
っつか、俺流だと1〜52までの数値をそれぞれ4つの1〜13のスーツに割り当てるけどね。
ちなみに、スーツの強弱は ♠ ♥ ♦ ♣ の順になっているんで
1から13までをスペードといった形で割り当てている。

119:デフォルトの名無しさん
07/09/19 02:24:23
ここにあがってるソースはほとんどそうなってると思うが?

120:デフォルトの名無しさん
07/09/19 02:27:05
ここって、そんなに出てないじゃん・・・しかも一部、その順番になってないものもあるしw

121:デフォルトの名無しさん
07/09/19 02:34:24
大富豪だよな?
大富豪にスートの強弱なんか無えよ

122:デフォルトの名無しさん
07/09/19 02:38:39
まあ普通は1から52じゃなくて、0から51にするよな

123:デフォルトの名無しさん
07/09/19 03:14:07
まぁまだ始めたばかりみたいだしあれもこれもってなるときついとこもあるな。とりあえず書いていって後からポインタとかに書き直せばいい

124:デフォルトの名無しさん
07/09/19 04:30:31
>107
この程度なら「必要」ではないよ。使えた方が「効率的」だったり「楽」なこともあるけど。

125:デフォルトの名無しさん
07/09/19 05:28:52
>>76
整数にキャストするなら実数に変換する意味なくない?
普通に剰余を求めればいいのでは。

126:デフォルトの名無しさん
07/09/19 05:40:08
>>125
rand()の実装を考えると、普通に剰余するだけでは精度が悪い。
精度を上げるために上位ビットの値を使ってる。

127:デフォルトの名無しさん
07/09/19 06:12:55
流れからすると構造体でカードを一枚一枚作ってる自分は負け組っぽいな
やる気が失せる

128:デフォルトの名無しさん
07/09/19 06:36:14
グローバルに int hand[player][cards] 宣言して処理してる
構造体なんか使ってねえや

129:デフォルトの名無しさん
07/09/19 07:00:22
カードを構造体にするのも悪くないと思う。
カードの表示や比較をする度に除算や余算をしなくていいし。
いまどきの環境なら容量に気をつかう必要があるわけじゃないしね。

130:デフォルトの名無しさん
07/09/19 09:13:32
struct Card {
  CARD_NUM number;
  CARD_SUIT suit;
  FUGO_CARD_RANK rank;
  LPCSTR str;
};

131:デフォルトの名無しさん
07/09/19 09:23:02
AIで探索したりするなら容量に気を使うこともあるかもなー

132:デフォルトの名無しさん
07/09/19 09:58:33
>>130は流石に大げさだと思うけど、逆にメモリ使用量を一番ケチれるのはどんな方法?

133:デフォルトの名無しさん
07/09/19 10:13:20
必要最小限のメモリ確保で、ポインタを使って(シーク的な意味で)アクセス。

134:デフォルトの名無しさん
07/09/19 10:44:07
HDに保存

135:デフォルトの名無しさん
07/09/19 18:00:20
大げさなデータ構造にしといた方がのちのち便利だと思うけどね。
特に大富豪は数字が一番低いのがカードの強さが一番低いになってないのがぶちきれる

136:デフォルトの名無しさん
07/09/19 18:02:38
革命があると強さが逆転したり、
同時に複数枚数出す事が出来たり、
面倒だ

137:デフォルトの名無しさん
07/09/19 18:25:47
がんばって作れよ

138:103
07/09/19 19:47:06
二人に分けるにはどうしたらいいでしょうか・・・

139:デフォルトの名無しさん
07/09/19 19:53:04
>>138
日本語で

140:103
07/09/19 19:56:04
すいません。>>103でハート、クローバー、スペード、ダイヤを13枚ずつ作りました。これを二人にランダムで分けたいんです。
二人なので26枚ずつに

141:デフォルトの名無しさん
07/09/19 19:59:11
>>140
とりあえず、C言語の本を一冊やり切ってからまた来い

142:デフォルトの名無しさん
07/09/19 20:01:59
>>103で何をしたつもりになってるの?

143:103
07/09/19 20:11:19
すいません。やったつもりでいました。とりあえずまた来ます

144:デフォルトの名無しさん
07/09/19 20:17:28
マークごとに配列4つ作っても意味ない

145:デフォルトの名無しさん
07/09/19 20:28:27
先はまだまだ長そうだな

146:デフォルトの名無しさん
07/09/19 20:34:08
初心者でも作ろうとすることはいいことだ。ただ今の知識じゃちょっときついとこがあるだけ

147:デフォルトの名無しさん
07/09/19 20:39:23
んだ
學而不思則罔、思而不學則殆つってな
工夫して勉強しての繰り返しだ

148:デフォルトの名無しさん
07/09/19 20:48:41
目的に合わない無駄なことを繰り返して苦労しても何も結果は出ないよ。
まず何を作るべきか、手段や手法を理解した方が良い。
この場合、トランプゲームにおいて、カードの山を作るということを
イメージして、それをどのように実装するか?をまず考える。
スーツごとに分けたものをシャッフルした山を用意してどないしましょ?

149:デフォルトの名無しさん
07/09/19 20:49:26
とりあえず今はカードの配列を作ってそれに数字を入れて表示しただけ。これをカードとして
使うのは・・・まぁ頭のいい人に聞いて

150:デフォルトの名無しさん
07/09/19 20:53:15
このスレ頭から読み直して、他の人がカードをどういうふうに扱ってるか良く見ればいいのに

151:デフォルトの名無しさん
07/09/19 20:58:31
具象から抽象へ思考のジャンプが必要になるところ
本質的に難しいことなので、理解するのにちょっと時間かかってもしょうがない

152:デフォルトの名無しさん
07/09/19 21:16:46
抽象から具象じゃなくて?

153:デフォルトの名無しさん
07/09/19 21:36:25
データ構造が大事だな

154:デフォルトの名無しさん
07/09/19 22:11:14
>>143
なんかよくわかんないけど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;}


155:デフォルトの名無しさん
07/09/19 22:27:02
>154
どこら辺がダメぽか書けよ…
つーかお前のそのコードは読めんぞ。
7行スレとかのノリのつもり?

156:デフォルトの名無しさん
07/09/19 22:35:34
>>154
どうみてもダメなのはお前

157:154
07/09/19 22:37:33
>>155 ゴメン。 130じゃなくて103ネ。安価間違えた
ロダにあげるのメドクサイから改行抜いただけだけど。

158:デフォルトの名無しさん
07/09/19 22:38:58
>>103のためにどこがいけないか教えてあげないと

159:デフォルトの名無しさん
07/09/19 22:40:09
なんでわざとわかりずらく書くんだよ読む人のことをしないならうpるなよまじしねまじしね

160:デフォルトの名無しさん
07/09/19 22:41:12
その偏ったシャッフルでカードをシャッフルしたつもりかよw

161:デフォルトの名無しさん
07/09/19 22:50:07
もう誰か>>34を作ってやれよ。俺には無理だけど

162:デフォルトの名無しさん
07/09/20 00:38:25
>>161
できる奴がやってもしょうがねえって
よって、おまえやれや。教えてやっからよ

163:デフォルトの名無しさん
07/09/20 01:56:08
とりあえずおおまかな流れでも。

カードをシャッフル
プレイヤーにカードを配る
プレイヤー、対戦相手は出すカードを選択する
ゲームのルールに則って出されたカードを処理する
ゲームが終了する条件が満たされたら結果を表示

みたいな。コンピュータがどのように出すカードを選択するか
その辺りは適当に独自でライブラリを作って対処。

164:デフォルトの名無しさん
07/09/20 02:03:31
>>163
おおまかすぎつか粒度がおかしいだろ
とりあえずプレイヤーとかカードとか手札とかのデータ構造考えてみ?

165:デフォルトの名無しさん
07/09/20 02:11:39
>>164
口先だけで何も提案しないお前が言うなボケクズw
お前みたいな口先だけでデータの構造考えてみ?とか
他人任せなくせして自分が何も考えてないのがバレバレ。
それはただの処理の流れであって、具体的な処理についてじゃないぞw
お前、プログラムを作るとき、先にソースを書いて後で分からなくなるタイプだろ?w
普通、処理の手順や流れを決めてから部分部分を作って、後でおのおのを組み合わせるなんて
当たり前だぞw

166:デフォルトの名無しさん
07/09/20 02:12:14
164 名前:デフォルトの名無しさん 投稿日:2007/09/20(木) 02:03:31
>>163
おおまかすぎつか粒度がおかしいだろ
とりあえずプレイヤーとかカードとか手札とかのデータ構造考えてみ?

お前が おかしいだろ おかしいだろ おかしいだろ おかしいだろ おかしいだろ おかしいだろ
手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ?
手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ? 手札とかのデータ構造考えてみ?
だからまだそういう段階の話じゃねーってバーかw

167:デフォルトの名無しさん
07/09/20 02:12:53
> 手札とかのデータ構造考えてみ?
ワラタw こいつ何が言いたいんだ?っつかなんだこいつ?リーダーでもないくせに。
そこまで言うならお前がその手札とかのデータ構造考えてみ?w

168:デフォルトの名無しさん
07/09/20 02:14:15
162 名前:デフォルトの名無しさん 投稿日:2007/09/20(木) 00:38:25
>>161
できる奴がやってもしょうがねえって
よって、おまえやれや。教えてやっからよ
↑あとこいつも。アホだろ。お前がやれよ、まるで自分は出来る奴みたいな
結果を出してもいないくせに、出来ない奴を目の前にしてやってもない
自分の方が出来るとか思いたいんだろw

169:デフォルトの名無しさん
07/09/20 02:18:12
>>163はただの流れ。まずはどういう手順で処理されていくかの
どういう処理をするモジュールが必要になるかの前に考えるだろ。
データ構造って、何が言いたいんだ?それを言うならお前がまず
それについて述べろ。>>164


170:デフォルトの名無しさん
07/09/20 02:18:14
>>165-168

171:デフォルトの名無しさん
07/09/20 02:19:25
とりあえず大まかな仕様だけ決めちゃってよ
そうして分担すればいいじゃないか。。。

172:デフォルトの名無しさん
07/09/20 02:20:45
エキサイトしてんなあ
気に入らないレスをスルーできないなら
最初から書き込まなきゃよくね?w

173:デフォルトの名無しさん
07/09/20 02:25:39
URLリンク(www.google.co.jp)
たかだか1〜52(あるいはジョーカーを入れても53?)の数字を扱う程度でデータ構造とか
あまり重要ではないな。ゲームのルールがどうかであって、それに応じたプログラムの
処理手順や全体の構造をまず先に考えるだろ。データ構造が出来ていればなんとかなるのか?
さすがに痛すぎだわ、データ構造を考えてみ?さんw

174:デフォルトの名無しさん
07/09/20 02:27:49
どうでもいいよ
荒らすのはカンベン

175:デフォルトの名無しさん
07/09/20 02:35:27
URLリンク(dictionary.goo.ne.jp)
りゅうど りふ― 1 【粒度】
粉状物体の粒子の大きさの度合。一般に、粒子の平均直径で示される。

164 名前:デフォルトの名無しさん 投稿日:2007/09/20(木) 02:03:31
>>163
おおまかすぎつか粒度がおかしいだろ

これは何が言いたかったんだろうか?最近覚えた言葉をなんとなく使っただけの
初心者です、ありがとうございました。

176:デフォルトの名無しさん
07/09/20 02:43:23
あーあ、わりと良スレだったのに。

177:デフォルトの名無しさん
07/09/20 02:43:51
こんな瞬発力のある粘着は初めて見た

178:デフォルトの名無しさん
07/09/20 05:43:43
Cがらみででこいつを知らないのは素人だぜ

179:デフォルトの名無しさん
07/09/20 05:56:58
大富豪の英語訳はMulti Millionaireなんだがwikipedia日本語版にはmuiti millionaireとある。
てっきりmultiだと思ってコピペしてたらmultiと打って弾かれたのでおかしいとは思ったんだ。

180:デフォルトの名無しさん
07/09/20 18:11:02
Wikipedia項目リンク
とりあえず七並べ作ろうぜ?

181:デフォルトの名無しさん
07/09/20 18:13:45
っつか具体的な内面的な処理やコードはおいといて、大まかにどういう流れで
勧めていくかの項目くらい作っておくだろ。それに応じて必要な部分を作っていくなんて
プログラミングをやっていれば当たり前だと思うが。
まさか、mainの中に全部詰め込んでしまうタイプ?

182:デフォルトの名無しさん
07/09/20 18:40:41
ごちゃごちゃ言ってねーでそろそろ誰もが納得する>>34を実現した理想的なコードをあpれや

183:デフォルトの名無しさん
07/09/20 18:51:46
お前がやれよ

184:デフォルトの名無しさん
07/09/20 19:24:49
>>182
やだぷー、俺は今から七ならべを作るからw

185:42
07/09/20 19:27:05
>>182
ごめん、まだできてない。

186:デフォルトの名無しさん
07/09/20 19:40:15
しょうがねえなお前ら
俺が今からjavaで作ってやるよ

187:デフォルトの名無しさん
07/09/20 19:41:13
>>186
スレタイ読んでくれい。「C言語で」な。

188:デフォルトの名無しさん
07/09/20 19:46:52
っつーか、カードをシャッフルして分配するところまで作ったけど
対戦相手のコンピュータがどのようにカードを場に出すかってところでつまづく。


189:デフォルトの名無しさん
07/09/20 19:48:56
とりあえず、なにも考えずにそのとき出せるカードで一番弱い奴を出すって実装してみたら?
その実装のままゲームとして出してる例もあることだし。

190:デフォルトの名無しさん
07/09/20 19:49:03
とりあえずは一番小さいのから出すってのでいいんじゃない?

191:デフォルトの名無しさん
07/09/20 20:09:42
>>189-190
甘いな。
最初からwikipediaに載ってるローカルルールを全て実装可能なように設計するのだ。

192:デフォルトの名無しさん
07/09/20 20:11:22
ルールとCPUアルゴリズムの区別もつかないバカはひっこんでろ

193:デフォルトの名無しさん
07/09/20 20:12:36
おっと先に言われた

194:192
07/09/20 20:13:37
すいませんちょっといいすぎました
これからはきをつけますので

195:デフォルトの名無しさん
07/09/20 20:15:39
誰だ、お前w

196:デフォルトの名無しさん
07/09/20 20:17:37
んじゃ俺はおっきいのから出すようにするよ。ナニの小さい奴は最後ね

197:デフォルトの名無しさん
07/09/20 20:18:29
男ならランダムだろうが!

198:デフォルトの名無しさん
07/09/20 20:26:15
>>197
いや、ランダムったって、ゲームのルールに応じて出せないカードじゃ仕方がないし
出せる中からなんて探しててもそれはそれで面倒だし・・・

199:デフォルトの名無しさん
07/09/20 20:28:39
ルール上次に出せるカードをリストアップするのなんか簡単だろ・・・

200:デフォルトの名無しさん
07/09/20 20:31:02
ルール通りに動くものなんて再発明はどうでもいいよ
URLリンク(www.tnlab.ice.uec.ac.jp)
これに従ってAI作って競う方が面白そう

201:デフォルトの名無しさん
07/09/20 20:35:52
そうだね
君はそれをやればいい

202:デフォルトの名無しさん
07/09/20 20:37:50
>>200
SDKのコンパイルの段階で躓く奴が多そうだ

203:デフォルトの名無しさん
07/09/20 20:57:30
宣伝スレおつ

204:デフォルトの名無しさん
07/09/20 23:16:30
ちゃらんらん

205:デフォルトの名無しさん
07/09/21 00:48:40
7ならべを作ったらここで公開しても良い?それとも公開したら後悔しそう?

206:デフォルトの名無しさん
07/09/21 00:55:58
そのセンスの無さから見るとたぶん後悔することになるだろうな

207:デフォルトの名無しさん
07/09/21 01:06:31
んじゃ公開せずに作ったことを後悔しまつ orz

208:デフォルトの名無しさん
07/09/21 01:08:15
後悔後に立つ

209:デフォルトの名無しさん
07/09/21 01:24:55
あっ、それじゃソースは公開せずに、チョンパイルした
Win32用の実行プログラムだけをうpするわ。

210:とりあえず
07/09/21 01:31:27
>104 で場に出すまで (しかしまだ入力できない...力尽きた)
int 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;

211:デフォルトの名無しさん
07/09/21 01:58:31
>>210 プログラム見るの面倒だけどどんな仕様ってかルールで作ってるんだ?

212:デフォルトの名無しさん
07/09/21 02:02:15
うpロダにまとめてうpしてくれい。コピペしてコンパイルするのまんどくせっ

213:デフォルトの名無しさん
07/09/21 03:17:55
手持ちのカードについて思ったんだけど、やはり数字とスーツの情報を持った
構造体を作って、それを双方向リストにでもして、抜いたカードの部分を
リストを削除するように消してといった感じにして、手持ちのカードリストが
ヌルポになったら手持ちがなくなったという感じにするとか考えてみたけど
やっぱやーめた。

214:127
07/09/21 04:00:02
>>213のような話は既に実装済みで今はこんな感じ

*** 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)

215:デフォルトの名無しさん
07/09/21 05:25:32
>>214
というか、実装したコードを書いてもらわんとさっぱり・・・

216:デフォルトの名無しさん
07/09/21 22:16:49
今からC言語猛勉強やって1ヶ月で大富豪できるかな。前やって途中でやめてしまったんだよな

217:デフォルトの名無しさん
07/09/21 22:20:42
前やって途中でやめたんなら状況が変わらない限りまた途中でやめてしまうだろう
何か意欲を維持できるものができたのなら話は別

218:デフォルトの名無しさん
07/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でやってたけど。熊本で。


219:210
07/09/21 23:41:01
>211
複数枚カードの組 or 3枚以上の同じスーツのシーケンス は出せる、ルール
当然、場札より大きくないとダメ(3,4,...J,Q,K,A,2の順)

>212
「うpロダ」って何?

220:デフォルトの名無しさん
07/09/21 23:42:31
もいっこ。

次はパスのルールなんだけど、
場で一度パスしたらその場はもう参加できないの?

また3人でやっているとして、
A氏が4、B氏が7ときて、C氏はQがあるけど、出したくないからパスした。
そしたらA氏がJで切った。B氏はパスした。

この状況で、C氏はQ出せる?それとも強制パスでA氏の場になる?


221:デフォルトの名無しさん
07/09/21 23:43:41
>218

もれも 2. だな。埼玉、千葉で。

222:デフォルトの名無しさん
07/09/21 23:44:45
>>218 俺のところでは2の条件かな。
>>220 パスした人はその場が切れるまで参加できないってしてた

おそらく地方とかでルール変わるかもしれないけど、公式ルールってないのかな

223:デフォルトの名無しさん
07/09/21 23:45:37
>>221
お、2が増えた。
母集団が増えることはあまり期待していないので、
もう2人くらいいるなら2で実装してみようかな。

一番簡単だし。


224:221
07/09/21 23:46:46
>220

C氏はQ出せる。
場に出した人"以外の他の人全て"がパスした時だけ流れる、ルール
だったな

225:221
07/09/21 23:49:07
>224 ちょっと説明不足だな

誰かが出したらその時点でカウントがリセットになって、それ以降からパスのカウントが始まる
って感じ

言葉にするとよく分からないな...

226:デフォルトの名無しさん
07/09/21 23:51:46
>>225
分かるよ。自分が出したカードを自分が切ることになったら流れるってことでしょ。


でもやっぱり>>222タイプもあるんだよねぇ。

いや、CPUの思考ルーチンに差を出せないかと思ってさ。
昔でいうパックマンのモンスターみたいに。

とりあえず手札を減らしたい派、Aや2を温存する派、革命できるときは何より革命を狙う派…とか。
もちょっと考えてみる。


227:デフォルトの名無しさん
07/09/22 01:24:42
ちょっと頑張って、テストまったくせずに一通り書いた
エラー直してコンパイルしたら、手札のあまりの見にくさに吹いた
二人対戦だと一人のカード多いよ('A`)

おまけに複数枚出しを忘れてたorz
もういいや寝よ
俺みたいな初心者じゃなくてちゃんとした人が結構作ってるみたいだし

228:デフォルトの名無しさん
07/09/22 01:36:07
何故Cでやらねばならないのかと言えば
スレタイに「C言語で」とはっきり断ってあるからだ。
これがなければどれだけ簡単だっただろうか。

229:デフォルトの名無しさん
07/09/22 01:57:11
>>228
1はCで作りたいといっているだけで、
ほかのやつは他の言語を使ったって一向に構わないと俺は思うぞ。

230:デフォルトの名無しさん
07/09/22 02:05:29
作るのは勝手だが、このスレには必要ないな

231:デフォルトの名無しさん
07/09/22 03:39:44
rank = ( num + 11 ) % 13

232:デフォルトの名無しさん
07/09/22 03:45:16
>>229
君は本当にC言語もスレタイも理解できてないのかね?
ある程度の実装がされている開発環境なら言語を選ばずとも作れるんだよ。
このスレは”C言語で”だからね。かまわないって言い出すとキリがなくなるだろ。

東京から京都へ東海道を歩いて行くというイベントで
移動して目的地に到達すりゃ良いから鉄道でも自動車でも
一向に構わないなんて言ったら歩いていくという目的が無視されるでしょうに。

233:デフォルトの名無しさん
07/09/22 03:47:31
東京から京都へ 足を使って移動 ってなら
歩くも良し、走るも良し、屁理屈抜きで足でこぐ自転車でも良し
という条件ならおkとも言えよう。歩くって言ったら歩く。

234:デフォルトの名無しさん
07/09/22 04:03:42
楽しむのが目的だあな
おおらかさが無いとつまらん

235:デフォルトの名無しさん
07/09/22 04:11:08
頑張ってソートのアルゴリズムとかを調べながら作ってて、
ふとスレ読み返したら>>104を見てソート関数があらかじめ用意されていたことを知ったorz
なんか負けた気分


配列でやるのはやっぱりきついかな?
出したカードの分、穴が空いちゃうし。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4735日前に更新/153 KB
担当:undef