[過去ログ] Pythonのお勉強 Part68 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
723: (ワッチョイ 09f0-Z1Pq) 2022/11/10(木)16:41 ID:avJI0YX/0(2/2) AAS
>>722
teamsに申し込んでoffice365に申し込めばクラウド上でエクセルが使えます
724
(2): (ブーイモ MMd5-OSgl) 2022/11/10(木)17:38 ID:aw2UCTg8M(1) AAS
>>712
カードゲームならカードクラスは作ったほうがよさそう。
あとはカードゲームのルールによる。
725
(1): (ワッチョイ 927e-THRA) 2022/11/10(木)18:14 ID:y5PDmjdo0(1) AAS
>>724
687が戒めたいのがまさに724みたいな馬鹿野郎なんだろうな。
目的と手段が入れ替わってclass考えて作るのに必死になる馬鹿。
726
(3): (ワッチョイ 655f-nsye) 2022/11/10(木)18:34 ID:RApG3JqD0(1) AAS
カードクラス作ってもいいけど、同じカードが存在しない、記号4つと数字1〜13の組み合わせの
ものにクラスがいちいちいるかな。
カードクラスはカード1枚を表して、なにができればいいんだ?

記号クラスがあって、各記号クラスがあって、ナンバークラスがあって、
is_MarkMatchとかis_NumberMatchとかもってんの?
idとprintがあればいいのかな。まあいいけど、そんだけのために
classいちいち用意するのめんどくない?
複数枚のカードを扱うcardsクラスなのかな?機能はいろいろ持てそうだけど
ゲーム固有すぎてどうなのかな?
727
(1): (テテンテンテン MM96-xvRb) 2022/11/10(木)19:12 ID:/sng0JalM(1) AAS
可読性考えるとクラスのほうが良いわな
自分だけが使うなら好きに作ればいい
728: (ワッチョイ 7247-GkOZ) 2022/11/10(木)19:17 ID:tUNuHkwK0(2/4) AAS
自分だけが使う場合でも後々困る
読みにくくていいのは再利用しないと判ってる場合
729: (ワッチョイ 1997-OSgl) 2022/11/10(木)19:47 ID:eS5awfmL0(1) AAS
>>725
689だが、トランプはクラスを作った方が(少なくともnamedtuple,dataclass)便利だと思うぞ
>>726
記号クラス、番号クラスなんて作らない
記号はenum、番号はそのまま1~13でいい
が、どの記号が黒だ赤だ、どの番号が絵柄か(JQKA)
みたいなのはたとえインスタンスが一個でもメソッドになってた方が便利だと思うけどなあ。

カードは内部表現とUI上の表現が異なるのが自然だし、そういう意味でもクラスにしておくのは悪くないと思うが

クラスにしすぎてもしょうがないというのは、ゲームのルールをクラスにして共通のインタフェース持たせて、バリエーションを切り替えられるようにしても大抵は仕方ないみたいなことだよ
もちろん、どんなゲームシステムを作るかによるし、ルールを共通インタフェースで入れ替えられるようにするメリットがある場合もあるけど
730: (アウアウウー Sacd-nZLu) 2022/11/10(木)20:15 ID:1wmpgP/ea(1) AAS
>>726
ちょっと発想が変だよ
731: (ブーイモ MMad-bOnd) 2022/11/10(木)20:18 ID:TQxJo3Q4M(1) AAS
全てユースケース次第じゃね
13×4のブール配列で持っていたほうが都合がよい場合もあるだろうし
732: (ワッチョイ 7247-GkOZ) 2022/11/10(木)21:05 ID:tUNuHkwK0(3/4) AAS
とりあえず作って、必要に応じてリファクタリングしていけばいい
733: (ワッチョイ b12c-rDMU) 2022/11/10(木)22:35 ID:SvDTIviz0(1) AAS
カード型のインスタンスを生成するデッキクラスを作りたいやん

deck.suffle()
hands = deck.draw(5)

みたいなさあ
あとは各ゲームで処理つくろ
734: (ワッチョイ 7247-GkOZ) 2022/11/10(木)22:41 ID:tUNuHkwK0(4/4) AAS
カードのリストでよくね
735
(1): 687 (ワッチョイ b11d-rPWN) 2022/11/10(木)23:28 ID:ofaAiG0L0(2/2) AAS
多くのレスを頂き、ありがたく思います
ちょっと自己顕示欲が強い気もしますが、俺のGitHubを公開させて頂くので、
よろしければご覧下さい
外部リンク:github.com
のblackjack_3.pyがそれです
これでもクラス使わないで書けるのかな…
736
(1): (ワッチョイ d201-+3fi) 2022/11/11(金)00:15 ID:ajyQllPs0(1) AAS
力作だね

友人のアドバイスは痛いほどよく分かる
クラス云々よりも「ここからメインの処理」以降の各処理を関数にまとめるほうがずっと大事だよ
737
(1): (ワッチョイ 7247-GkOZ) 2022/11/11(金)00:21 ID:gNt5qX/T0(1/4) AAS
1関数がでけえ
ということを言いたかったんだろう
738
(1): (ワッチョイ 09f0-Z1Pq) 2022/11/11(金)00:23 ID:Zi2NVkwv0(1) AAS
マサくん
739
(1): (ワッチョイ 5e10-420S) 2022/11/11(金)00:52 ID:5ErmYwLs0(1) AAS
何のためにでっかい関数の中にクラス作るのか分からん
この設計センスなら友人のアドバイスは正しいな
740
(1): (アウアウウー Sacd-nZLu) 2022/11/11(金)00:55 ID:n0j9oGtca(1/2) AAS
blackjackで囲むのって意味あんのかね
741: 687 (ワッチョイ b11d-rPWN) 2022/11/11(金)01:14 ID:9Wk/PRlY0(1/2) AAS
レスありがとうございます

>>708
クラス使った方が見通し良くなりますよね?
スッキリJavaにもそう書いてありました(Pythonの本ではないですが)

>>709
複雑にならない方がいいからだそうです

>>710
ええ、ですので皆さんの意見をお聞きしたんです

>>711
うーん、明らかにプロと思われる方の書き込みもありますし、
信じられるレスはあると思います

>>716
ただ彼の主張では、なるべくクラスは使うな、ということでした
Javaを独習した経験がある俺からすると、少し疑問符が付くのです
742: (アウアウウー Sacd-nZLu) 2022/11/11(金)01:21 ID:n0j9oGtca(2/2) AAS
クソクラスをクソと認識できるためにもそれなりの能力が要るからね
743
(1): 687 (ワッチョイ b11d-rPWN) 2022/11/11(金)01:28 ID:9Wk/PRlY0(2/2) AAS
>>724
そうですよね
カードのクラス作りました

>>726
複数枚のカードを持つCardクラスです
ブラックジャックなので、A・J・Q・Kの値は別に決める必要があります

>>727
可読性は重視したいです

>>736
そう言って頂けると大変ありがたいです
やっぱりそこは1つの関数にまとめた方がいいんですね

>>737-740
それも友人に、グローバル変数は少なければ少ないほどいい、と言われたのを
受けてのことです
744: (ワッチョイ 515f-r/4M) 2022/11/11(金)01:39 ID:tK9Svk7P0(1/2) AAS
>>735
ざっと見た感じ、そりゃ色々言われるわ
クラス云々言ってるのに、blackjackっていうデカい関数の中にクラス切ってる時点で吹いたわ

あとクラスの役割分担というか、所属してる関数もおかしく感じるわ
プレイヤークラスっていう名前なのに、にルール関係のスコア計算、バースト判定とかが入ってるし
それこそblackjackのルールを管理をするクラスを作る方が自然だべ

あともうし自分で書くとしたら、ルールクラスにis_winっていう関数作って、そこで勝利判定してtrue/falseで返すわ
最後に全パターンで人間/CPUに対して勝利判定かけてるけど、参加プレイヤー/CPUが増えた時の勝利判定の実装とか
これベースだと面倒だろうなって思った
745: (ワッチョイ 515f-r/4M) 2022/11/11(金)01:43 ID:tK9Svk7P0(2/2) AAS
>>743
>グローバル変数は少なければ少ないほどいい
これはまず変数のスコープは狭い方が良い、っていう話だぞ
(グローバル変数だとそれこそスコープが広くてどこで書き変わるのかが不明瞭になるから、なるべく使うなって言われてる)
バカデカい関数を作るって何の解決にもなってねえwwwwwww
746
(1): (ワントンキン MM62-76so) 2022/11/11(金)05:10 ID:dIH3TsNBM(1/3) AAS
使い回さないのに関数化やクラス化する意味ってあるんだろうか
747: (ワッチョイ 6914-hUUh) 2022/11/11(金)06:45 ID:fLgBQpEC0(1) AAS
is_<動詞> ってたまに見るけどどこかで流行ってるの?
748: (テテンテンテン MM96-xcLn) 2022/11/11(金)07:35 ID:BuWtLPbxM(1/2) AAS
>>746
この業界には、「一処理は100行に収めるべし」という格言があってな
つまり100行以上の処理があったら、100行以内にぶった切って関数にして順次呼ぶべしってことなんだよ
理由は知らん
749: (アウアウウー Sacd-nZLu) 2022/11/11(金)08:51 ID:QYmFVFm/a(1) AAS
まあ分割っていうか処理に名前つけろやって感じだな
抽象的に書こう
750: (ワッチョイ 7247-GkOZ) 2022/11/11(金)09:56 ID:gNt5qX/T0(2/4) AAS
でかい関数はあれもやってこれもやってになってるから、
それを機能毎に分割すればいいだけ
1箇所からしか呼ばれない関数がいくつもできるけど、それは問題ない

うまく作ってあれば、関数の戻り値を次の関数に渡すだけ、みたいなシンプルな構造に自然となる
それぞれの機能が変数をいろいろ共有していて切り分けられなかったら、元々の書き方が悪い
751: (ワッチョイ 927e-THRA) 2022/11/11(金)10:26 ID:XH1qJoq+0(1/2) AAS
pythonではクラスをあまり作らないほうがいい、じゃなくて
お前にクラスは百年早い、って言いたかったんだろその友人は。
碌に関数も作れないのだからクラスなんて無用の長物。
752: (ワッチョイ 9263-zlm6) 2022/11/11(金)10:31 ID:PAETAgDl0(1/2) AAS
昔、関数ごとに仕様書作成が必要な現場があって、それを嫌って
ほとんどの関数が200行を超えるサイズで書かれる様になった
1-
あと 250 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.013s