C言語でトランプゲー ..
[2ch|▼Menu]
263:デフォルトの名無しさん
07/09/22 18:47:42
何か普通に作る流れだったのに、gdgdになってきてこのまま誰も作らなそうだな

264:35
07/09/22 18:58:33
>>35ですが、
通常ルール部分の判定処理(出せるか出せないか)
AI(簡単なものなら、上の判定を使って適当にカードを選ぶ)
特殊ルール(8切りなど)の実装
がコーディングできれば完成です。

265:デフォルトの名無しさん
07/09/22 18:58:35
俺は自分で作る気は無いけど質問とかがあれば答えてるよ
正直言って今ここのレベルは高くないと思ってるけど
作る人が居るなら成長できるよう応援する

266:デフォルトの名無しさん
07/09/22 19:03:03
俺も他の人が悩んでるのを見て一緒に考えるのが楽しいわ

267:デフォルトの名無しさん
07/09/22 19:23:43
複数枚出しの指定方法てどうしたらいいかな?

1.
[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 //二枚出し

268:デフォルトの名無しさん
07/09/22 19:24:58
2番の方向で

269:デフォルトの名無しさん
07/09/22 19:26:20
>>267
手順が一つ増えるけど...

もう一枚手札を切りますか? (y or n) :

270:35
07/09/22 19:27:50
>>267
カード選択 > S1 H1
みたいなのを有効にしてます
手札からカードを選ぶだけ選んで、出せなかったら選び直しにしてます
>>267の方がUI的に優れてるかな

271:デフォルトの名無しさん
07/09/22 19:31:20
既に複数枚出しの場になってることきのことも考えれば、2がいいと思う。

272:デフォルトの名無しさん
07/09/22 19:45:31
>219
「うpロダ」はアップローダのことだな。

ただ、巷のアップローダは画像用とか圧縮ファイル用が多いから
あんまりテキストアップロードには向かないかもね…
サイトとかブログとか持ってるならそこに上げたりしてもいいと思う。

昔、プログラムコード用の外国のアップローダ
見たことあるんだけど、忘れちゃったな…どこだっけか。

273:デフォルトの名無しさん
07/09/22 19:55:21
うpろだなら、C/C++の宿題スレに張ってあるのはどうだろう?

274:267
07/09/22 20:24:11
>>268-271
ありがとうございます
その方向で作ってみます

>>267の2番はユーザー入力値間違えましたw
あれじゃ一枚出しだ……

275:デフォルトの名無しさん
07/09/22 20:43:07
大富豪作ってる人は一日どのくらいのペースで作ってる?

276:デフォルトの名無しさん
07/09/22 21:31:37
できる人はルールを設定してくれれば一日でその通りに作れる。
普通は一週間以内かな。大富豪作ってばかりもいられないし

277:デフォルトの名無しさん
07/09/22 21:49:12
大富豪でこのスレが終わるわけじゃないからな
大富豪が終わったら次は何にする?

278:デフォルトの名無しさん
07/09/22 21:49:59
仕切りたがるだけのアホは市ね

279:デフォルトの名無しさん
07/09/22 21:50:15
>>277
王道なトランプゲームをいくつか実装してみる

280:デフォルトの名無しさん
07/09/22 22:19:44
>>278
自己紹介乙

281:デフォルトの名無しさん
07/09/22 22:23:00
思考ルーチンはこんな具合で造った。
URLリンク(www.imgup.org)

282:デフォルトの名無しさん
07/09/22 22:28:12
>>281
参考にさせてもらうぴょん。

ところでJkKってのは何?誤記?



283:デフォルトの名無しさん
07/09/22 22:33:57
C言語暦三日の俺が一ヶ月でこれ作れるかな。Cについてはポインタやって今は構造体やってる

284:デフォルトの名無しさん
07/09/22 22:35:11
プログラミング暦三日じゃなきゃ、できるんじゃね?

285:デフォルトの名無しさん
07/09/22 22:37:13
プログラミング暦三日です・・・

286:デフォルトの名無しさん
07/09/22 22:51:11
とりあえずCやって目標は11月までに作る!これを一ヶ月で作るなんて考えがやっぱ初心者だな
って思った方。あなたが正しい

287:デフォルトの名無しさん
07/09/22 22:53:32
>>282
Joker Killerの略です。すまんこって。

一応ルールは、2/Jk上がり禁止、革命有り、Jk殺し有り、が前提です。

288:デフォルトの名無しさん
07/09/22 22:57:10
複数枚(ダブル等)の表現方法(表示方法では無しに)で困っているんだが、
配列以外でいい方法無いかね
複数枚だと必ず数字が同じだから(階段は考えないで)、
それを利用して排他な表現方法が無いものかと思うんだけど……

289:デフォルトの名無しさん
07/09/22 23:00:19
>>288
どういう意味?

290:デフォルトの名無しさん
07/09/22 23:01:34
カード選択前に「何枚モード」を選ぶとか
ルーチンは簡単になるけどあんまりスマートではないか

291:デフォルトの名無しさん
07/09/22 23:04:57
>>289
場札をint型変数で管理してるんだけど、
複数枚出してる時はどんな値を格納しようかと思って。

単純に要素数が4の配列で場札を管理すりゃいいのかもしんないけどさ、
せっかく「数字が同じ」て限られているのに、
わざわざ実際にはありえない物も含めた全組み合わせを格納できる方法を採用するのも癪で……

292:デフォルトの名無しさん
07/09/22 23:08:28
このスレには実際に大富豪作ってる、または作った経験があるって人はどのくらいいるんだろう。
ちなみに俺は作りたいけど作れない人だけど

293:デフォルトの名無しさん
07/09/22 23:15:52
>>291
階段は使えない仕様なん?

294:デフォルトの名無しさん
07/09/22 23:18:16
>>293
とりあえず基本ルールのみ実装だからw
でも後でいろいろ加えていくとき、やっぱ困るか……
大人しく配列にします。

295:デフォルトの名無しさん
07/09/22 23:28:35
>>291
階段なしなら、(出してる枚数-1)*13を加えてやればいいんじゃないかと
>>294
階段ありなら配列は4じゃなくて出せる最大枚数分だな

296:デフォルトの名無しさん
07/09/22 23:33:10
>>295
>(出してる枚数-1)*13
スートはいらないならそれでいんだけど。
まあ大富豪においてスートなんか飾りだけど。

そうかあ、階段ありなら出せる枚数増えるんだよな……定数宣言しとこ

297:デフォルトの名無しさん
07/09/22 23:40:07
>>292


プレイできる所まで作ったら飽きちゃって、そのまま。

298:デフォルトの名無しさん
07/09/22 23:42:04
>>296
>まあ大富豪においてスートなんか飾りだけど。

ローカルルールにはスートがかなり絡んでるようだよ

299:デフォルトの名無しさん
07/09/22 23:46:27
>>267の2の方法でやるとき、
ユーザー入力と一対一対応させるために出せるカード組み合わせの配列を作ろうとしたんだ。


この配列の要素数っていくつにすればいいんだ?

300:デフォルトの名無しさん
07/09/22 23:52:26
>>299
自由に出せるときにもその方法を取るのか
そうなると手札が多いとき選択肢が多くなるぞ


301:デフォルトの名無しさん
07/09/23 00:09:02
昔ポーカーなら作った事あるが、変な最適化はしなかったな。
トランプをデッキとして捕らえ、54枚のデッキをひとつ使うゲームとして組んだ。
俺も当然のごとく飽きて、折角用意した汎用性は無に帰したけど。

302:デフォルトの名無しさん
07/09/23 00:12:13
その昔、といっても、もう6年以上前になるが、ブラックジャックを作ったことがある

303:デフォルトの名無しさん
07/09/23 00:36:39
プレイヤーが知っているはずであることは知ることができなければならないし、
プレイヤーが知らないはずであることは知ることができてはいけないし、知ろうとしてはいけない

という自分で作った条項に苦しんでる。
クラスじゃないから隠蔽ができないので結局そのつもりだけなんだが。

304:デフォルトの名無しさん
07/09/23 00:47:50
54枚がどの領域に配置されてるかが管理されてれば出来るでしょ。
公にオープンされる場(7並べなら並べる場所)と自分にだけオープンされる場(手札)
場構造体にユーザIDとカード配列を持たせればいい。何か難しく考えてない?

305:デフォルトの名無しさん
07/09/23 01:15:12
ユーザIDがグローバルなら0、それ以外ならrandで割り振れば嫌でもクローズドな世界に突入さ

306:デフォルトの名無しさん
07/09/23 01:17:11
やべっ、なんかVisualC++で作りたくなってきたw

307:デフォルトの名無しさん
07/09/23 01:30:11
そっちのほうが楽かも

308:デフォルトの名無しさん
07/09/23 01:34:02
本当にやりたいと思っている奴はやりたいなんてわざわざ書き込まない

309:デフォルトの名無しさん
07/09/23 01:35:00
やべ、なんかVisualC++で作りたくなくなってきたw

310:デフォルトの名無しさん
07/09/23 02:02:50
プログラミング初心者です
カード出した後の穴空き配列の対処に困っているんですが
・穴空きはそのままループ用いて処理
・一回一回詰める
どちらが良いんでしょうか?

311:デフォルトの名無しさん
07/09/23 02:04:56
空を表す常態で放置

312:デフォルトの名無しさん
07/09/23 02:24:33
一回一回詰めてたが、考え直してみればその方がいいな

313:310
07/09/23 02:38:51
>>311
ふと思ったんですが、その場合ユーザー入力はどうすればよいでしょうか?
-1をカードが無い状態として、配列に
{6,-1,8,-1,-1}
と入ってるとします
-1はループで飛ばされるので、ユーザー的には{6,8}と同義です
つまりユーザーが入力した数値が添字に対応してなくて不便ではないかと。

一回一回、ユーザー入力に対応した別の配列を生成するくらいなら、
配列を一々詰めた方が効率が良いのではないでしょうか?
もっと良い方法がありますかね?

314:デフォルトの名無しさん
07/09/23 02:42:42
6,8 で添字を合わせたいなら、{-1,-1,-1,-1,-1,-1,1,-1,-1,1,...} じゃないの?

315:デフォルトの名無しさん
07/09/23 02:49:37
ランダムアクセスできないといけない問題でもあるの?
if (EMPTY_CARD != card[i]) みたいに毎度サーチすればいいじゃん。

316:デフォルトの名無しさん
07/09/23 03:04:39
>>314
ああ、そういうタイプの配列にすればできますね
{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個目を毎度探せばよい、ということでしょうか?

317:デフォルトの名無しさん
07/09/23 03:07:38
>>316
そういう選択のさせ方をするならその通り

318:デフォルトの名無しさん
07/09/23 03:13:46
コンパクションや線形リストのためのコード書くほうが手間じゃない?
カードゲームなんて配列の要素数が少ないんだから
変に手間掛けてもCPUは喜ばないよ。

319:デフォルトの名無しさん
07/09/23 03:14:58
やべっ、トランプゲームより子供を作りたくなってきたw

320:316
07/09/23 03:57:41
>>317
すいません、こんなこと聞くのも恥ずかしいんですが、「その通り」って
>一々ユーザー入力に対応する配列を作るなら、詰めていく方が効率良い
>ユーザー入力nに対して、ループで配列の有効な値のn個目を毎度探せばよい
どちらの意味で?

321:デフォルトの名無しさん
07/09/23 04:18:59
>>320
後者だろ常考

322:210
07/09/23 09:27:46
>316

もれのは前者(いちいち詰めているタイプ)
高々50数枚程度なら効率とか気にしない

まぁプログラミングの勉強に、って観点なら効率を考えてみるのもよいかもだが

323:デフォルトの名無しさん
07/09/23 09:47:09
c++とboostとpstade解禁してくだちぃ
あとついでにpdcursesも

324:デフォルトの名無しさん
07/09/23 10:11:28
>>323
公開したもの勝ちだ

325:デフォルトの名無しさん
07/09/23 12:56:36
わざわざお題から外れてまで他の言語を使用する程の問題でも無いと思うけどね。
無粋と言うか子供っぽいと言うか…

326:デフォルトの名無しさん
07/09/23 13:02:09
わざわざ議論を蒸し返すなよ

327:デフォルトの名無しさん
07/09/23 13:16:05
ま、そういう事だね。

328:210
07/09/23 13:34:35
宿題スレの借りますた
URLリンク(kansai2channeler.hp.infoseek.co.jp)

とりあえずゲーム進行まで。
革命なし。2上がり禁止なし。

次は思考ルーチンかぁ...

329:デフォルトの名無しさん
07/09/23 13:43:35
>281
...見れないorz

330:デフォルトの名無しさん
07/09/23 16:53:46
ポーカ作ってみたけど、途中で飽きた…
URLリンク(kansai2channeler.hp.infoseek.co.jp)

331:デフォルトの名無しさん
07/09/23 17:52:00
ぽーかぽーか(ほうかほうか > そうかそうか)

332:デフォルトの名無しさん
07/09/23 18:19:24
とりあえず初心者向けの本一冊読んできたけどカードを作る際に実際に使えるものとして宣言するには
どうすればいいか分からなかった

333:デフォルトの名無しさん
07/09/23 19:26:03
今デバッグ中だが、ソースサイズが>>328の倍近くあるw
やべえ、公開したくなくなってきたww

334:デフォルトの名無しさん
07/09/23 20:04:21
>333
むしろ公開して、サイズが膨れあがった原因を突き止めるんだ

335:333
07/09/23 20:11:17
>>334
むしろデバッグが終わらな(ry
・複数枚が何故か出せない
・出せるはずのカードが何故か出せない
・AIが何故かたまに無限ループ
関数関係が複雑でデバッグめんどいw

336:デフォルトの名無しさん
07/09/23 20:13:14
混乱するならオートマンを書く。整理大事。

337:デフォルトの名無しさん
07/09/23 20:13:26
>>335
今のところバグはないが、俺は12000バイト前後あるぞ

338:デフォルトの名無しさん
07/09/23 20:13:43
>>335
関数毎にテスト。
それで問題ないなら組み合わせてテスト。

339:デフォルトの名無しさん
07/09/23 20:21:09
>>335
カードどうやって扱ってるんだ

340:333
07/09/23 20:31:59
>>336>>338
試してみまつ

>>337
こっちも修正したらそんくらいになるかもorz

>>338
int cards[PLAYER_NUM][PLAYER_CARD_MAX];

341:デフォルトの名無しさん
07/09/24 14:51:45
ほほう

342:デフォルトの名無しさん
07/09/24 20:56:21
URLリンク(www.microsoft.com)
んもう、これ使っちゃおうぜ?

343:デフォルトの名無しさん
07/09/25 09:48:13
C#解禁してくれたらxnaで書く。
ってスレが違っちゃうか・・・

344:デフォルトの名無しさん
07/09/25 09:50:32
まずスレ建てればいいんだよ
ほぼ確実にここに誘導されるから
そういう経緯なら追い出されることは無いだろうよ

345:デフォルトの名無しさん
07/09/25 13:01:09
まあ、C/C++/C#ならこのスレでいい。

346:デフォルトの名無しさん
07/09/25 13:07:03
ちょっと質問
言語何でもOKならみんなは何で作る?

347:デフォルトの名無しさん
07/09/25 16:33:12
オブジェクト指向を取り入れた言語が溢れる昨今
敢えて非オブジェクト指向言語であるC言語を使って
四苦八苦することにノスタルジーを感じるのがこのスレの趣旨だと理解しているが

348:デフォルトの名無しさん
07/09/25 17:04:22
324 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/23(日) 10:11:28
>>323
公開したもの勝ちだ

349:デフォルトの名無しさん
07/09/25 17:58:13
喪前らゲ制作板逝けw

350:デフォルトの名無しさん
07/09/25 18:05:51
ゲ制でCUI大富豪なんて誰も参加しねぇよw
あそこでやるなら普通GUI

351:デフォルトの名無しさん
07/09/25 23:58:11
>>103は今頃何してるだろう

352:デフォルトの名無しさん
07/09/26 02:00:40
他人のことを気にしていたって何にもならないさ。
むしろ調べようもなく知る術すらないのに、気にしてばかりいると
すぐに禿げて寿命も縮んで、いつの間にかコロッと死んでしまうかもしれないぞ。
人間、くよくよしない、それが長生きの秘訣だって100歳になった双子が言ってたじょのいこ?

353:デフォルトの名無しさん
07/09/26 02:06:14
日本語でおk

354:デフォルトの名無しさん
07/09/26 02:17:37
最近、日本語がまともに読めない、理解できないのはゆとり世代が
社会人になったせいか。時間の流れは速いなw

355:デフォルトの名無しさん
07/09/26 02:18:49
日本語でおkとか言う奴に限ってまともに日本語を理解できない、使えないのが特徴てき。
自分が知る日本語の範囲内で理解しようとしても、レベルが低いから相手にならない。
こんなプロジェクトに参加すること自体、厚かましい。早々に立ち去れい >>353


356:デフォルトの名無しさん
07/09/26 02:22:34
>>353
お前には朝鮮語で話をした方が良かったか?悪い、俺日本人だし
朝鮮語は勉強したことないからさっぱり分からん。

357:デフォルトの名無しさん
07/09/26 02:25:35
ネタをネタと読みきれない奴が多いな。やっぱパソコンばっかいじってると頭が論理的な思考になって
他人が知って欲しい「意味」を読み取れないのかな

358:デフォルトの名無しさん
07/09/26 02:30:35
URLリンク(www.chunichi.co.jp)
ゆとり世代の日本語おk君、君は記事をしっかり読みましょう。まずはそこから。
まぁ、お前の日本語力じゃ記事の意味すら理解できないだろうし、長生きの秘訣すら
理解できないだろうね。ほら、お前今何歳だ?鏡を見ろ、何歳に見える?
20代なのに、禿げたりデヴってたり、しわやしみが増えて
30代を過ぎたオッサンになってねーか?w

359:デフォルトの名無しさん
07/09/26 02:34:59
ちなみに、〜じょのいこ ってのは、「簡単じゃないか」を
「こんとんじょのいこ」って言うと、えなりかずき君が言っている様に
聞こえるというネタだから。それを指定したのなら、ネタに反応したのはどっちやら?w

360:デフォルトの名無しさん
07/09/26 02:36:55
それくらい知ってるんだからね・・・!勘違いしないでよね!!

361:デフォルトの名無しさん
07/09/26 02:43:41
チョンのスレに迷い込んでしまった

362:デフォルトの名無しさん
07/09/26 02:45:31
>>360
チュンデレでちゅか?
>>361
それはちょんでもないことだ。

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

364:デフォルトの名無しさん
07/09/26 02:47:40
            ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつが最高にアポー

365:デフォルトの名無しさん
07/09/26 02:50:25
 

366:デフォルトの名無しさん
07/09/26 02:52:35
っつか、君たち暇なら何かトランプゲームを作れYO!

367:デフォルトの名無しさん
07/09/26 06:39:40
君たち、急に静かになったね。そもそも「トランプ」って英語じゃないって知っているよね?
トランプとは「切り札」を意味する言葉で、英語では「プレイングカード」といった呼び名。
だからcardsと言うのさ、俺は、ふっ。

368:デフォルトの名無しさん
07/09/26 15:31:20
>>367
ここは日本語で大丈夫なスレです。
英語に堪能なあなたにはきっと辛いこともあるでしょう。
でも大丈夫。この壷をあなたの家のトイレに飾r

369:デフォルトの名無しさん
07/09/26 18:47:54
初心者が独学でCやって大富豪とか時間かかりそう

370:デフォルトの名無しさん
07/09/26 19:09:02
俺も作ろうかと思ってやってみたけどここにうpされてるのとは全く違うし俺のやり方でできるの?って感じ

371:デフォルトの名無しさん
07/09/26 21:01:27
汚いし長くてもいいならできるんじゃない?まさに今の俺

372:デフォルトの名無しさん
07/09/26 21:37:27
汚くて長い…正にウンコcodeってか。

373:333
07/09/26 22:33:00
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ウンコcodeがなんとか形になりましたので上げてみた。
複数枚処理を書き直して、入力方式は>>328さんのを真似てみますた。
コードが汚い・分かり辛い(特にAI周り)はとりあえず勘弁してくださいw
・ローカルルールや上がり制限は無し
・ジョーカーあり(ワイルドカード・最強カード)
・プレイ人数はデフォルトで3人。コード冒頭の定数を書き換えて変更できるが、54の約数以外では多分おかしくなる。
・AIは「出せるカードのうち最弱」なのを出すようにしてる。AI周りのコードは未整理なんでw

374:デフォルトの名無しさん
07/09/26 22:52:07
安心しろ。俺なんてカードを一枚ずつ作っていったバカだ

375:デフォルトの名無しさん
07/09/26 22:53:39
>>373
エラー(デバッガ例外)がでるのは仕様?
当方C++Builder6

int turn(int *cards , int *hasnum , int *fieldcard , int fieldnum , int pnum){



num = userturn(cards , hasnum[i] , fieldcard , fieldnum , nextindex); ←ココ

376:333
07/09/26 23:11:47
間違えてデバッグ用にAIの手札も表示したままだった……orz
一旦削除しましたので、修正版↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>375
まじすか
うちは5.5だけど出ないorz
もっと具体的なエラーの文面とか出ますか?

377:デフォルトの名無しさん
07/09/26 23:13:48
bcc55は異常なし

378:333
07/09/26 23:19:25
あれ、うちの5.5ってbuilderじゃないのか
compiler

379:デフォルトの名無しさん
07/09/26 23:22:58
>>376

//戻り値:PASS or 出した枚数
int num , nextindex[ONCE_CARD_MAX];
int i;

if (ptype[pnum] == MAN){
disp(cards , hasnum , fieldcard , fieldnum , pnum);
num = userturn(cards , hasnum[i] , fieldcard , fieldnum , nextindex);

iの値不定じゃない?

380:デフォルトの名無しさん
07/09/26 23:23:48
Borland C++ Compiler 5.5だけど動いた。そして俺のプログラムが改めてうんこなんだと思った。

381:333
07/09/26 23:34:18
>>379
それだ! 変数名間違えたorz
はい、ということで修正しますたorz
URLリンク(kansai2channeler.hp.infoseek.co.jp)
しかしよくこんなミスしてバグ出ずに動いてたな。
削除してばっかでろださんに悪い……
てかさっきからそこ眺めてたのに気づかない俺ってorz

382:333
07/09/26 23:38:29
やべ、まだデバッグ用のが残ってたorz
修正版は上げませんけど、247行目、userturn関数の最後から2行目のprintfは消して構いません。

ミス多すぎですねorz
少し吊ってきまつ

383:デフォルトの名無しさん
07/09/26 23:41:08
みんなプログラミング暦どのくらい?学生?社会人?

384:333
07/09/26 23:43:55
今自分でやってたら手札に2が5枚出てきました
どうみてもおかしいです
本当にありg(ry

385:デフォルトの名無しさん
07/09/27 00:24:32
>>384
がんがれw

386:デフォルトの名無しさん
07/09/27 00:53:12
ここでプログラミング暦一週間の俺が登場。トランプゲームだと思って甘く見てました。
>>381のプログラム見てもサパーリ

387:333
07/09/27 02:06:29
>>386
俺のコードはかなり汚いからw
>>328さんのとかは一つ一つの関数がすっきりしてて、
俺のなんかよりよっぽど分かりやすいと思うよ

>>383
初めてCに触れたのは3年くらい前
だけどちゃんとしたプログラミングは今回が初
学生でつ

388:デフォルトの名無しさん
07/09/27 04:22:01
オレは>>328のコードより>>381のコードのほうが好きだけどな。
コンパイルしていないから実装のレベルは無視。

でもまぁ、なんていうか、もうちょっと空白や改行を大事にしてくれよ。


389:デフォルトの名無しさん
07/09/27 23:11:15
頑張って7行で書くんだ。

390:デフォルトの名無しさん
07/09/28 00:28:12
○行って言うけど、それってかなり曖昧じゃね?
1行何文字って定義の元で行数を言わないと
改行するまで1行ってことにすれば、すべてのコードが
扱うコンピュータやエディタが表示可能な限り、1行で済むぜ?

391:デフォルトの名無しさん
07/09/28 00:30:13
この板で「7行」っつーと、7行×79バイトのことだ。


392:デフォルトの名無しさん
07/09/28 00:35:47
んで、1行の文字数や情報量が決められているってなら
今度は別にそれに応じて行数は無視してもなら問題はない。
要するに○行という考え方そのものがナンセンスだということさ、ふっ。
俺、今世紀最大の偉人じゃね?ぜってー俺って歴史に名が残るぜ?
お前ら名の残らないパンピーは俺にひれ伏すが良い

393:デフォルトの名無しさん
07/09/28 00:36:53
ナンセンスなハイセンス

394:デフォルトの名無しさん
07/09/28 01:05:17
っつーわけで、○行なんてわけのわからん規定はやめて
○バイト、半角文字の数を基準にした方が良いじょのいこ?

395:デフォルトの名無しさん
07/09/28 01:15:32
7行プログラミングってジャンルがあるんだ
単なるネタだしょ

396:デフォルトの名無しさん
07/09/28 01:25:01
なんでそんなに七行にこだわるのだろうか?
なーなーなななーなななーなーなー(DJ OZMA!)

397:デフォルトの名無しさん
07/09/28 01:26:17
>>390
プログラマの中では共通理解が出来ているから良いんだよ。
1行80桁というのはテレタイプとかの時代からなのかな。
今でも端末エミュレータを開くとデフォルトで横幅80桁の
表示になるよ。7行というのはDVDのコピーガードを、とある
学生がたった7行のスクリプトで破ったという故事から。

398:デフォルトの名無しさん
07/09/28 01:32:17
>>397
プログラマの中で共通っていうのは分かるが、問題はそこじゃない。
行という言葉に対してどういう定義がされているのか?
そもそも7行にこだわる意味があるのか?
それらを含めたら、7行なんていうこと自体がナンセンスなのさ。

399:デフォルトの名無しさん
07/09/28 01:36:54
何を問題にして何を言ってるのかわからんが、酔ってるのか?

400:デフォルトの名無しさん
07/09/28 02:23:44
長かろうが短かろうが正しく動くプログラムが良いプログラム
その上で仕様変更があるなら正しく変更できるプログラムが良いプログラム

401:デフォルトの名無しさん
07/09/28 02:31:16
「7行プログラム」を知らない素人が、的外れな突込みをして恥かいたってとこか

402:デフォルトの名無しさん
07/09/28 02:32:38
cならせめて2行でしょ

403:デフォルトの名無しさん
07/09/28 04:28:09
>>401
知っているからこそ疑問に思ったんだろ。そういう定義による7行ってのが
果たして意味があるのか?って話。むろん、こだわる必要がない以上無意味。
また、言うなれば実行プログラムのサイズや使用するライブラリの制限をした方が面白そうなんだが

404:デフォルトの名無しさん
07/09/28 04:34:43
URLリンク(pc.2ch.net)

405:デフォルトの名無しさん
07/09/28 05:06:40
なんでこの人恥の上塗りしてるの?


406:デフォルトの名無しさん
07/09/28 07:49:46
>>403
いや、明らかに知らなかったよ。まあ良いじゃん。

407:デフォルトの名無しさん
07/09/28 11:52:55
今も現役

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

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

408:333
07/09/28 21:42:48
ちょっと>>381のコードは忘れてください
シャッフル処理が明らかにおかしいことに気づきましたorz
カード重複しまくりじゃん……

409:デフォルトの名無しさん
07/09/28 22:13:04
だが断る

410:333
07/09/28 22:13:46
void shuffle(int *cards){
int i,r;
srand(time(NULL));

for (i=0; i<CARD_MAX; i++) {
r = (i+1.0) * rand() / (RAND_MAX + 1.0);
cards[i] = cards[r];
cards[r] = i;
}
}
shuffle関数をこれに置き換えれば大丈夫です。多分。

>>388
改行・空白が少ないってことですか?

411:デフォルトの名無しさん
07/09/28 23:12:40
シャッフルじゃなくて
> #define CARD_RANK(n) ((n)/13 == 4 ? JOKER_RANK : ((n) + 11) % 13)
のせいじゃね?

あと、>410 と >381 のシャッフルに違いがあるとは思えんのだが

412:デフォルトの名無しさん
07/09/28 23:31:15
>>410
このシャッフル(?)って、全員の枚数は均等になるの?
たとえば53枚を5人で分けたら、3人11枚で2人は10枚になる?

413:デフォルトの名無しさん
07/09/28 23:35:26
このシャッフルはただたんにカードをきるだけであって配るではないんじゃないの?

414:デフォルトの名無しさん
07/09/28 23:40:43
>>413
そうだね

415:デフォルトの名無しさん
07/09/29 00:00:27
>>410
細かいことだけど、ループはi=0からじゃなくてi=1からでok

416:デフォルトの名無しさん
07/09/29 00:09:57
>>413>>414 ごめん、勘違いしてた。

>>410
>>388もオレなんだけど、空白については>>328のほうのコードに対するコメントね。

ただ、>>333のコードでも、
int turn(int *cards , int *hasnum , int *fieldcard , int fieldnum , int pnum){
    if (ptype[pnum] == MAN){
        ...
    }
    else if (ptype[pnum] == COM) num = AIturn(cards , hasnum[pnum] , fieldcard , fieldnum , nextindex);
    if (num == PASS) (ptype[pnum] == MAN) ? puts("USER:PASS!") : printf("COM%d:PASS!\n" , pnum);
    else {
        ...
    }
    return num;
}

上からゆっくり読めば分かるんだけど、たとえば
    }
    else if (ptype[pnum] == COM)
      num = AIturn(cards , hasnum[pnum] , fieldcard , fieldnum , nextindex);

    if (num == PASS)
      (ptype[pnum] == MAN) ? puts("USER:PASS!") : printf("COM%d:PASS!\n" , pnum);
    else {
って感じで空行を入れたりインデントしたりすれば、もちょっと分かりやすいかなと思うんだ。

いや、オレの読む力が無いだけかも知れんので、
こういう風に感じる人もいた、とだけ覚えておいてくれれば。


417:デフォルトの名無しさん
07/09/29 00:13:12
ブロックで囲まない一行をインデントするのはイヤだ

418:333
07/09/29 00:15:36
>>411
CARD_RANKどっかおかしいですかね?
シャッフルについては、cards配列の初期化とcards[i]とcards[r]のスワップをまとめた感じの処理ですから、
>>381だとcards[r]=i;はいいとしても、cards[i]=r;はcards[r]に元々rが入っていなければスワップになっていないと思います。
cards[i]の元の値はiと考えても問題ないので(実際には値不定)、>>410で良いと思います。多分。

>>412
>>413さんの言うとおりです。それと多分54の約数以外だと多分バグります。

>>415
それだとcards[0]の値が不定のままの可能性があると思ったのですが……初期化処理はしていないし、グローバル変数でもないので。
(グローバルでなくては勝手に初期化されないんですよね?)
>>381だとcards[0]=0;と入れていたんですが、まとめた方がすっきりするだろうと思ってまとめました。

419:333
07/09/29 00:19:45
リロードしてなかった……

>>416
今度から気を付けてみます
どっか別のところは一行ifでもインデント入れてたような気もしますが……統一しなきゃ
本当いうと三項演算子にifの変わりするのもあまり褒められたもんじゃないんでしょうけどね

420:デフォルトの名無しさん
07/09/29 00:20:57
ああ、すまん勘違いしてた。
でも、配列を{0}で初期化しといて無駄な計算とスワップ減らした方がよくね?

421:333
07/09/29 00:28:10
>>420
ああ、それ、この前から気になりつつも検索してなかったですw>配列を0初期化
{0}でできるんですね。じゃあそれでやっておきます。
ありがとうございます。

なんかレスしてばかりで悪いのでそろそろ何か自粛しときます。

422:デフォルトの名無しさん
07/09/29 00:31:40
>>421
学生でここまでできるならすごいと思うぞ。特にわざわざCでトランプとか作る奴も少ないし

423:デフォルトの名無しさん
07/09/29 00:41:31
>>422
今時それくらいじゃすごいなんて思わんけど。むしろやっている奴は
それくらい出来て当たり前。俺なんてC言語を週1の授業で習った程度で
本格的にやらずとも、学生時代は普通にトランプゲームなんて作ってましたが何か?

424:デフォルトの名無しさん
07/09/29 00:48:09
Cを独学で2週目に突入。毎日やってるわけじゃないけどこのスレに書かれてるプログラムくらいは
完璧とは言わないけど少しは読めるようになった。ただこれを作れって言われたらシャッフルするところで
限界

425:デフォルトの名無しさん
07/09/29 00:49:15
>>423
はいはい、すごいすごい

426:デフォルトの名無しさん
07/09/29 00:51:13
あのな、今じゃ普通にプログラム開発環境なんて手に入るし
PCも10年前と比べたら性能は雲泥の差でしょ。それに日本は
生活水準も上がってきて、パソコンなんて簡単に手に入る。
この程度のことを高校生で出来ない奴が情報系の学校に来ても
将来が危ういだけなんだよ。すごいじゃなくて当然。

427:デフォルトの名無しさん
07/09/29 00:54:25
>>426
はいはい、すごいすごい

428:デフォルトの名無しさん
07/09/29 00:55:40
できる奴から見たらたいしたことないし、できない奴から見たら凄い、
で良いじゃん

429:411
07/09/29 00:55:52
わかった cards[i]=r; と cards[i] = cards[r]; が違うのか。理解した。

((n) + 11) % 13 って
n
=0 -> 11
=1 -> 12
=2 -> 0
=3 -> 1
:
=11 -> 9
=12 -> 10
ってことだ! すんません理解できますた。おかしくないです。

430:デフォルトの名無しさん
07/09/29 00:58:31
すごい の基準が主観的、自分基準だからダメなんだよ、成長しない奴ってのは。

431:デフォルトの名無しさん
07/09/29 01:03:04
パソコン以外できなさそうな感じだな

432:デフォルトの名無しさん
07/09/29 01:05:03
>>421
なんとなく勘違いしてそうなので書いておく。

配列を{0}で初期化するってのは、
int array[10] = {0};
ってすると、array[0] 〜 array[9] が 0 になる、ってことを期待しているんだろうし
実際にそうなるんだけど、
これは array[0] は {0} で指定されているから 0 になって、
array[1] 〜 array[9] は何も指定されていないから 0 になるんだよ。

だから、int array[10] = {1};
ってやっても array[0] だけが 1 になって、
array[1] 〜 array[9] は何も指定されていないから 0 だ。

間違って覚えないように。


433:デフォルトの名無しさん
07/09/29 01:07:02
パソコンが出来るという意味すら曖昧だろ。単にパソコンで簡単な操作をするくらいなら
誰でも出来る。しかし、プログラミングが出来る奴でもパソコンの操作が苦手な人もいる。
なんだかんだ言っても、プログラミングには数値計算や理論的な考え方が必要になる。
もっと柔軟な考えを持つんだな。

434:デフォルトの名無しさん
07/09/29 01:11:15
>>433
たいしたソースでなくても、実際に上げてるぶんだけ、口先だけのお前よりよっぽど凄いよ

435:デフォルトの名無しさん
07/09/29 01:12:23
初期化子の足りない要素は0で初期化する。
a[5]={0}はa[0]を初期化するだけで他の初期化子の足りない要素は全部0、
a[5]={0}は{0,0,0,0,0}ってことだしa[5]={0,1}は{0,1,0,0,0}になる

436:デフォルトの名無しさん
07/09/29 01:13:11
>>432
更新せずに書き込んだ俺涙目

437:デフォルトの名無しさん
07/09/29 01:13:59
>>434
> 口先だけのお前よりよっぽど凄いよ
へ?別に 俺より なんて基準はどうでも良いんだけど。
けど、あれくらい俺には10年前には出来ていたが?

438:デフォルトの名無しさん
07/09/29 01:22:16
口でできてたって言うだけなら誰でもできるからな

439:デフォルトの名無しさん
07/09/29 01:26:33
>>437 100%誤作動を起こさないプログラムを作るのは可能だと思いますか?

440:デフォルトの名無しさん
07/09/29 01:29:20
>>423が出来ようが出来まいが凄かろうが凄くなかろうが、
このスレの人間にとっては非常に興味のない事なんだが、空気悪くしたいだけなら他所へ行ってくれ


441:デフォルトの名無しさん
07/09/29 03:33:58
>>410
> srand(time(NULL));
これも細かく厳密に言えば、time()が返す値は time_t 型。
srand() に与える引数は unsigned int 型。
今、BCCのtime.hの中身を見てみたら
typedef long time_t;
と定義されていた。符号ありのlong型。
っつーわけで、こまきゃ〜こと言ったがや、srand( (unsigned int)time(NULL) );
ってキャストしておくのが適切だぎゃや。

ちゃんこうまでに
URLリンク(www.bohyoh.com)
URLリンク(www.bohyoh.com)


442:デフォルトの名無しさん
07/09/29 03:36:11
>>440
いや、そうやって食いついてくる負け犬のお前が吠える方が空気を悪くしていると思うんだが?
所詮負け犬の遠吠えだろ?みっともないからやめろ。出来る奴を相手にすると
弱腰になるどころか、詰まらん粗探しを始めて、自分基準で叩き始めるタイプだろ?
出来て当たり前が出来ない奴が何をほざいても、世の中通用しないよ。
ほらっ、路上を見てみろ。当たり前に守る道路交通法を守らない奴が
流れを悪くした方が場の空気、流れが悪くなるだろ?みんながみんな守ってりゃ
流れは悪くならない。しかし、車の数が多くなると、人の数が多くなると
人間ってそういう状況に耐えられなくてね。つい我先にとでしゃばっちゃう奴もいるんだよ。
それが君だ。

443:デフォルトの名無しさん
07/09/29 03:50:51
>>441
正直どうでもいいし、わかってて面倒だから省略してるのがほとんど。

444:デフォルトの名無しさん
07/09/29 03:58:38
よくこんな長文思いつくなw
とりあえず消えないならコテつけろよ

445:デフォルトの名無しさん
07/09/29 04:05:15
>>444
っつかお前みたいに煽る方が鬱陶しい。消えるならお前の方だろ

446:デフォルトの名無しさん
07/09/29 04:06:26
>>443
> 正直どうでもいいし、わかってて面倒だから省略してるのがほとんど。
それが素人志向、なんつって。最近じゃコンパイラ任せな人も少なくないが
知ったかぶるとボロが出て言い訳もみっともないぞ。

447:デフォルトの名無しさん
07/09/29 04:08:10
>>423
はいはい、すごいすごい

448:デフォルトの名無しさん
07/09/29 04:08:23
>>446
お前、いままで散々ボロだしときながらまだ懲りてないの?

449:デフォルトの名無しさん
07/09/29 04:25:33
何kmも信号のないような田舎では道交法を遵守するほうが周りに迷惑な場合もある

450:デフォルトの名無しさん
07/09/29 04:36:22
前にも型変換でボロだしまくったのに、もう忘れちゃったのか

451:デフォルトの名無しさん
07/09/29 04:53:41
すごいからすごい
すっごくすごい

452:デフォルトの名無しさん
07/09/29 05:02:21
なんかすごくて可哀想なのが沸いてるな・・・

Cはド素人だが俺も勉強がてら何か作ってみようかな
何作ろう、簡単そうなカードゲームってなんかないかしら

453:デフォルトの名無しさん
07/09/29 06:01:11
>>439
素人かどうか見極めるのにちょうどいい質問だな

454:デフォルトの名無しさん
07/09/29 06:17:56
> 100%誤作動を起こさないプログラムを作るのは可能だと思いますか?
これはプログラムそのものに問題がある場合もあるが、誤作動を起こす動作環境
(ハードウェア、OS)にも話が及ぶんで、現実的には無理。素人とか以前に
100%誤作動を起こさないものがあると言わなきゃ良いだけだよw

455:デフォルトの名無しさん
07/09/29 06:26:28
極端な話をすれば、100%誤作動を起こさないプログラムも存在することは可能。
ただし、ユーザが誤作動をしていると思わなきゃ良いだけの曖昧さはあり。
まぁ、あの程度のソースで すごい なんていう奴の話は聞き飽きたから、失せろ。

456:デフォルトの名無しさん
07/09/29 06:32:42
>>453
っつか、揺さぶっている奴らは自分らがそれについて見解を示せよ。
他人に質問するばかりで、自分らは何も答えることが出来ないくせに
その程度って評価するのはおかしい。むしろ、自分が知らなかったことを
付き返されてファビョってんだろ?time()にしろsrand()にしろ。女々しいぞ、お前等。

457:デフォルトの名無しさん
07/09/29 06:37:13
煽りじゃなくトランプゲームのソースを書いてくれ

458:デフォルトの名無しさん
07/09/29 06:40:21
>>456
お前441?
引数に代入されるとき型変換されるから、キャストする必要なんて全くないよ

459:デフォルトの名無しさん
07/09/29 06:51:28
あぁ、分かった
昨日7行云々でアホな事書いて煽られた奴が腹いせに荒らしてるのか

460:デフォルトの名無しさん
07/09/29 06:52:54
#include <stdio.h>
int main()
{
TranpuGame();
return 0;
}

461:デフォルトの名無しさん
07/09/29 06:57:14
世の中、完全犯罪は可能ですか?って質問に答えてみろよ?w

462:デフォルトの名無しさん
07/09/29 07:47:42
完全犯罪は露呈しない
だから犯罪にならない
故に完全犯罪は存在しない

463:デフォルトの名無しさん
07/09/29 07:50:46
C++でstaticなメソッドを使って

int main() {
Game::Main::Start();
}

見たいに書けたら格好よぐね?
意味もGameモジュールのメインモジュールをアプリケーションエントリポイントから
起動してるんだなぁってはっきりしてるし

少なくとも俺が昔使ってた
Game()();よりは判りやすい筈w

464:デフォルトの名無しさん
07/09/29 08:06:34
>>463
それが出来ないという罰ゲームのノリがわからない奴だな

465:デフォルトの名無しさん
07/09/29 09:08:12
作りやすいトランプゲームっつーと…ソリティア系かね?
要は一人遊び系
コンピュータの思考ルーチンとか要らんし

クロンダイク(Win付属のソリティアと一緒)とか
イーブン、クローバー、ピラミッド、スパイダー…
ソリティア系だけで結構色々ある

466:デフォルトの名無しさん
07/09/29 14:58:32
いっちゃん単純と思われるのは 神経衰弱

467:デフォルトの名無しさん
07/09/29 14:59:55
>>466
それは言おうとしたが単純なだけに作るのもつまらなく
言えばお前が作れ言われると思って言わなかった。

468:デフォルトの名無しさん
07/09/29 15:05:42
>467
コンピュータの思考ルーチン考えるのは単純じゃないな

...いんちきするならそうでもないがw

469:デフォルトの名無しさん
07/09/29 15:13:20
>>468
神経衰弱には
あるプレイヤーに分かっていて他のプレイヤーには分からないという要素がない。
だからAIが人間的な忘却をエミュレートしない限り勝敗は純粋に確率的なものになるということ。

470:デフォルトの名無しさん
07/09/29 15:14:05
一度開けたカードは全部記憶しておいて組があれば開けて取る
組がなければまだ開けてないカードをランダムに一枚開けて記憶しておいたカードの中に組となるものがあれば開ける
なければもう一枚ランダムに開く

これ以外に何か戦略ある?

471:デフォルトの名無しさん
07/09/29 15:15:36
神経衰弱なのに7並べ思い浮かべてたww

472:デフォルトの名無しさん
07/09/29 15:17:00
> なければもう一枚ランダムに開く

これ、相手に有利になっちゃうだろw
あえてすでにひらいてあるカードを選ぶ、って戦略じゃね?

473:デフォルトの名無しさん
07/09/29 15:20:38
>>472
ならば相手も同じ戦略を取ればよし
進行が遅くなるだけで結果は変わらない

474:デフォルトの名無しさん
07/09/29 15:23:33
なるほど
最後は未知のカードを開けない方がいいのかな?
期待値はゲームの段階や既知のカード数によって変わらないかな?

475:デフォルトの名無しさん
07/09/29 15:23:58
千日手は引き分けですかね?

476:デフォルトの名無しさん
07/09/29 15:25:07
> 進行が遅くなるだけで結果は変わらない

本当に?
2枚目あけたときに 1枚目と同じになるより 過去に開けていたカードと同じなる方が多いと思うんだけど?
次のプレイヤーが有利になるじゃん

477:デフォルトの名無しさん
07/09/29 15:30:49
相手の戦略にあわせるっていう意味じゃないかな?

478:デフォルトの名無しさん
07/09/29 15:31:59
やっぱり477は取り消します


479:デフォルトの名無しさん
07/09/29 16:07:31
いや477のとおりだよ
双方同じ戦略で戦えば有利不利ということもない

480:デフォルトの名無しさん
07/09/29 16:13:46
加えて相手が一枚だけの戦略をとっていることが丸分かりなんだから
論理的に類推しうる要素が全くないんだよ

481:デフォルトの名無しさん
07/09/29 19:52:15
>>462
なるほど、確かに犯罪があったのかどうかも分からないなら
完全犯罪以前に闇に葬られるであろう。では、犯罪があったが
犯人が分からない。指紋など決定的な証拠があるけど捕まらない
といった類ではどうだね?まぁ、あれこれ挙げたらキリがない。
とにかくこの世にはすべてにおいて「完全」「完璧」などないと言って過言ではない。
今もこうして、予期せぬ事故は起こる・・・

482:デフォルトの名無しさん
07/09/29 20:23:12
完全犯罪やバグの無いプログラムを確実に作り出す方法が無いだけで、
どちらも普通に存在するだろ

483:デフォルトの名無しさん
07/09/30 00:53:04
>>482
だからそういうことだって。いちいち 分かりきったことを偉そうに 解説するなよ、青二才

484:デフォルトの名無しさん
07/09/30 22:45:28
バグを抹消することは難しい。ソフトウェアの規模がますます巨大化・複雑化し、
すべての可能性をプログラムすることが不可能になってきたからである。
ある研究報告によれば、5000年間プログラムを実行して1回しか障害を起こさないような小さなバグがシステムの安全性を損ねている。
さまざまな角度から検査を行うのだが、米国の民間航空機のように1時間当たり10億分の1以下の障害発生率が要求されるシステムでは、
こうしたバグを除去するには数十万年間も検査をし続けなければならない


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

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