X



皆さんコード組む時って
0001仕様書無しさん
垢版 |
2022/09/06(火) 22:59:30.51
細々した部分から作っていき、段々全体を整えていきますか?
それとも初めに大枠の見通しを付けて、段々細部に掘り下げていきますか?
0002仕様書無しさん
垢版 |
2022/09/06(火) 23:15:28.72
ほそぼそした部分とは?
大枠とは?

しっかり設計してから作れ
適当に作るな
0003仕様書無しさん
垢版 |
2022/09/07(水) 00:22:26.11
>>2
こまごまと読むんだぞ池沼
0004仕様書無しさん
垢版 |
2022/09/07(水) 00:24:42.29
大枠をつかんで部品にバラしてそれぞれの部品をテストして組み上げる感じだな
0006仕様書無しさん
垢版 |
2022/09/07(水) 03:32:55.71
そんな枝葉の内容は気にしてない
重要なことは全裸で組んでないコードは全部ゴミだということ
0007仕様書無しさん
垢版 |
2022/09/07(水) 04:25:06.12
ゴミスレ建てんな

ボトムアップ開発
トップダウン開発

作るものによって変わるだけの話
0008仕様書無しさん
垢版 |
2022/09/07(水) 05:36:03.03
MVVMで設計してる
0009仕様書無しさん
垢版 |
2022/09/07(水) 08:24:06.55
既存の横転とか最初から具体的なものもあるけど、ほとんどの場合は抽象から具体に落とし込んで行く。最初からいいモデルができるかというと難しいので汎化(抽象化)と特化(具体化)を繰り返し反復する事で洗練させていく

木を見て森を見る
森を見て木を見る
その繰り返し
0011仕様書無しさん
垢版 |
2022/09/07(水) 11:49:51.74
関数を並べていって、
それぞれをつなげる

当たり前では?
0013仕様書無しさん
垢版 |
2022/09/07(水) 12:22:07.16
動くもの作ってから
構成を考えて
全体を一気に作る
0014仕様書無しさん
垢版 |
2022/09/07(水) 14:19:56.67
>>3
「こまごま」でも「ほそぼそ」でもなんでもええわっ!って作るのがアジャイルな
「細々」は「ほそぼそ」と読むと思いますがいいですか?って設計書のレビューするのがウォーターフォールや
0015仕様書無しさん
垢版 |
2022/09/07(水) 15:02:16.43
>>14
こまごまと読むんだぞ池沼
0016仕様書無しさん
垢版 |
2022/09/07(水) 15:11:16.33
>>11
アホの作り方だな

まともな作り方は1つの関数に全部の処理を入れる
必要なときにのみ関数を分割する
0017仕様書無しさん
垢版 |
2022/09/07(水) 20:37:38.56
細々したところから作る人がいるなら作業動画を見てみたい
どんな思考回路で完成に持っていくのか想像つかないわ
0018仕様書無しさん
垢版 |
2022/09/07(水) 22:45:56.87
だから、オマエラのいう細々はボトムアップ開発といってだな名前ついてるから
0019仕様書無しさん
垢版 |
2022/09/07(水) 22:50:50.70
大体全体のパーツがどうやって絡み合ってどうやって動くというのは頭の中なり図なりで考えておいてパーツを端から書いてく
0021仕様書無しさん
垢版 |
2022/09/07(水) 23:42:30.20
何でも作れるでぇー!って状態からなら設計が先にくる
これいけるのか…?みたいな状態からなら動く試作品を先に作る
0023仕様書無しさん
垢版 |
2022/09/19(月) 13:21:43.29
ほそぼそしたところからつくります
00241
垢版 |
2022/09/19(月) 14:40:20.87
数日前にトランプのブラックジャックを作ってみたんですけど、
俺の場合完全にボトムアップでしたね
カードクラスを定義して、プレーヤークラス、コンピュータクラス、メインの処理と、
ルールや手順を思い出しながら処理を順々に仕上げては部分部分でテストし、
最終的に一つのプログラムが出来上がる、という感じでした
0025仕様書無しさん
垢版 |
2022/09/19(月) 15:10:42.03
カードクラスとか作るんかいなw
トランプなんて1~52でいいやんw
00261
垢版 |
2022/09/19(月) 15:59:37.21
クラスにしたのは、各カードがスートを4種類持ってるというのと、
スコア計算時にJ・Q・Kが10になり、Aも11になることがあるという事情からなんですよ
属性としてsuit、number、valueを持つようにしました
0028仕様書無しさん
垢版 |
2022/10/01(土) 22:58:32.07
ガンダムと一緒で最初にどんなモビルスーツを作るかを考えないで
足から組んでくとピグザムみたいのが出来る
003026
垢版 |
2022/10/13(木) 23:17:30.68
>>29
ありがたいです
以下のページのblackjack_2.pyがそれです
https://github.com/masa-gh/practice

文法の勉強が途中の状態で作り始めたので、継承や例外処理といった基本事項を
使ってはいませんが…
0031仕様書無しさん
垢版 |
2022/10/14(金) 09:24:46.26
とりあえずここか、例えばJ~Kまでを10点とするコードはmin使ったほうが良い
n = 13

print(min(10 , n))


あとスコアの計算が  decide_Avalue_1~4 この辺何やってるかわからんけど
手持ちのカードリストを入れたcardlistがあるなら
calc_score関数はそもそもこんなに冗長しないはず
こういう計算をしやすくする為に最初の
numbers: tuple[str, ...] = ('A', '2', '3', '4', '5', '6', '7', '8', '9',
'10', 'J', 'Q', 'K')
この辺で、文字データしか保有していないのが問題で
内部的に1~13の数値データを持つオブジェクトを作っていればnumber == 'J' みたいなコードは消える

'J'ってのはもしGUIゲームであれば'J'の部分には画像が入るわけだから
プログラム内部的な識別に使う1~13の数値データと、UI表示で使うAやJQKってものは分離しないといけない
0032仕様書無しさん
垢版 |
2022/10/14(金) 09:41:28.88
あとclass Playerとclass Cpuってのが完全に冗長してるだろ?
この場合の解決策は、継承・mix-in・動的に関数入れ替え

どれでも良いんだが、
俺は動的にやる事多いから宣言はこうなる
human class_new('HUMAN',human用関数)
cpu = class_new('CPU',cpu用関数)
0033仕様書無しさん
垢版 |
2022/10/14(金) 18:41:55.64
Python良く知らんからRubyで書いてしまったが配列の中身を数値型だけにしておけば
minとsumはブラックジャックなら有効活用できるな

def min(a,b) = a < b ? a : b
cardlist = [2, 5, 13]
p cardlist.sum # 13 => K を普通に足し算すると 20
p cardlist.map{|n|min(10,n)}.sum # min関数で13 => K を10として認識すると17
003430
垢版 |
2022/10/14(金) 23:19:58.98
>>31-33
ありがとうございます 参考になります

PlayerとCpuにおけるコードの重複に関しては、継承を使うことで解消したいと思います

decide_Avalue_1〜4では、Aの値が状況によって変わるので、
他のカードの合計値を引数にとって、Aのカード全体の値を返す仕様にしました

あと>>31で言及されている、数値データのオブジェクト化というのは
どんな感じにすればいいかなかなか検討が付きませんでした
よろしければヒントなどを頂けるとありがたいです
0035仕様書無しさん
垢版 |
2022/10/15(土) 08:04:26.92
>>34
すまんよくみたら.valueで内部的に数値は持ってたからCardクラス設計は今のまま平気だった

あー、decide_Avalue_1はそういう処理か
calc_scoreとdecide_Avalue_1~4はなんとかしないといかんね
他の部分は継承さえすれば全体処理の見通しをよくしているという評価も出来るけど
この箇所だけは、いわゆるマジックナンバーが出現してるからまずい
0036仕様書無しさん
垢版 |
2022/10/15(土) 09:36:40.69
あくまで参考にって感じだけど、decide_Avalueとcalc_scoreは俺が書くとこうなる

保有してるカードの中でAの枚数と、A以外の合計値を関数fに渡す
で、repeated_combinationで、 1 or 11 の選択を総当たりで出力、そこにscoreを足す(ここで21を超えるデータも出来る)
次にdelete_ifで21以上のデータを消して
残りからmaxで最大値を得る

戻り値が数値以外なら(rubyだとnil)、21オーバーした判定
Pythonでもrubyと似たような関数あるはずだから書けると思う

https://ideone.com/IryebL
def f a , score
 [1,11].repeated_combination(a).map do |m|
  m.sum + score
end.delete_if do|m|
  m > 21
 end.max
end

list = ['A','A',9] # 21
p f(list.count('A'),list.map{|m|m=='A'?0:m}.sum)

list = ['A','A',10] # 12
p f(list.count('A'),list.map{|m|m=='A'?0:m}.sum)


オマケでテストコード
https://ideone.com/ppPjbB
003730
垢版 |
2022/10/15(土) 17:11:33.80
>>35-36
レスありがとうございます

すいません、俺の知識では実装出来ませんでした…

一応>>30にあるリンクにblackjack_3.pyをアップしたのでよろしければご覧下さい
継承でHumanクラスとComputerクラスのダブりを解消したのと、
Aの値を決めるメソッドをdecide_Avalueに一本化しました
ただ10や11といったマジックナンバーは残ってしまいましたが
0038仕様書無しさん
垢版 |
2022/10/15(土) 18:58:04.44
>>37
マシになったじゃん
このくらいならとりあえずは書けてる

多分プログラム初めて間もないと思うから全方向に知識伸ばすしかねーわな
0039仕様書無しさん
垢版 |
2022/10/15(土) 22:44:02.25
うん、中高生くらいならこのくらいかければ十分だと思う。
無理にググったよくわからない簡略化した実装をコピーしてくるのではなく、
稚拙ながらちゃんと自分で考えて作ってるっぽいところがいいね。
がんばってね。
004037
垢版 |
2022/10/15(土) 22:47:21.73
>>38
ありがとうございます
そうですよね

でもがっかりさせて申し訳ないんですが、PCでプログラミングするようになって
もう5年くらい経つんですよ…独学ではありますが
じゃんけんとか簡易なコードばかり書いている内に歳だけ取ってしまった感じです

まあそれはそれとして、GitHubに時々新しく書いたコードをアップするかも
しれないので、もし時間があるようでしたらたまにチェックして貰えると幸いです
004137
垢版 |
2022/10/15(土) 22:53:19.55
>>39
すいません、中高生ではなく中高年です…

それでも一応頑張るようにします
レスありがとうございます
0042仕様書無しさん
垢版 |
2022/10/16(日) 08:28:00.31
>>40
なるほどね、
じゃあこういう種類のゲームを作るほうのスキルを上げたいってことでいいのかな

この手のものはクラスをきっちり書く人もいるんだけど、
もう少し先入観を破壊するように短いコードを探していくと良いと思うよ
そうしないとトランプとかボードゲーム系は短く書ける人なら非常に短く実装するのに、それを何百行で実装するっていうの続けてたら差が埋まらない

https://i.imgur.com/Z0GoQpQ.jpg
この本がオススメ(amazonリンク張れないから画像でw)

あと読まなくても良いが歴史的なLisp読み物
http://www.asahi-net.or.jp/~kc7k-nd/onlispjhtml/

これはLispを使えっていうのんじゃなくメタプログラミングを覚えろってことだ
アップしたソースコードの中に全く見られないのが言語内言語(DSL)っていう考え方
この種類のプログラムはメタプログラミングの考え方やアイデアがあったほうが簡潔になる
githubは暇があったら見るよ
0043仕様書無しさん
垢版 |
2022/10/16(日) 10:35:33.40
>>41
それは大変失礼。
画像生成AIブームに乗って最近pythonに興味を持った感じかな。
C系か古いJava系臭がするので、もっとpythonを使っている
意味のあるコーディングをするといいよ。
00441
垢版 |
2022/10/16(日) 15:14:35.40
>>42
リンクやアドバイスありがとうございます
元々はコードが書ける仕事ならどの分野でもいいかなと思ってたんですが、
ちょっとしたゲームを練習で書いてる内に、ゲーム制作も楽しいんじゃないかと
思い始めました
メタプログラミング難しそうですね
00451
垢版 |
2022/10/16(日) 15:18:58.87
>>43
いえいえ アドバイスありがとうございます
うーんまあPythonが一番流行りかなと思って始めました
大学の時に授業でCをやって、5年前くらいから最近までJavaをやってましたので
その影響かと思います
0046仕様書無しさん
垢版 |
2022/10/16(日) 18:45:14.09
5年Javaやっててこれか。
M銀行案件でJavaといいつつノンプロ単純作業労働者してた?
0047仕様書無しさん
垢版 |
2022/10/16(日) 19:22:31.12
匿名をいいことにそうやって馬鹿にするのやめなよ
0048仕様書無しさん
垢版 |
2022/10/16(日) 21:51:51.66
馬鹿にしていると思うのは、お前自身が見下してるからだろ?
そうでなけりゃ馬鹿にされることという認識すらないはずだからな。
00491
垢版 |
2022/10/16(日) 22:36:51.25
>>46
えーとですね、>>40にも書いた通り独学です
仕事は…世間でいう所の無職ですね
障害者施設に通っています

>>47-48
いや、社会に出ればどのみち厳しい評価は下るのですから、今からズバズバ
言ってくれた方が却って助かります
0050仕様書無しさん
垢版 |
2022/10/16(日) 23:29:32.02
>>46
日本のIT職としては違和感ないコードだろw
もしかして自己評価高いタイプ?
0051仕様書無しさん
垢版 |
2022/10/16(日) 23:53:23.88
えっ?趣味なら別にすきにすればって話だけど、業務でこれは追放レベルだろ
0052仕様書無しさん
垢版 |
2022/10/16(日) 23:59:29.74
障害者が独学で趣味でやってるならこのレベルで十分でしょ。
別にこれでpython経験者を名乗ってフリーランスになろうって
言うんじゃないんだからムキになんなよ。
0053仕様書無しさん
垢版 |
2022/10/17(月) 00:11:57.49
っつーか、pythonで書かれてるけどpythonのコードじゃないわなw
作法や便利機能覚えて精錬されていくのはこれからだろ。
0054仕様書無しさん
垢版 |
2022/10/17(月) 00:19:58.42
ほぼ憶測で言うけど入門書の一番最後に乗ってたゲームサンプルの改造だろ
言語の入門書の最後にこの手のゲームサンプル載せて締めくくる本はよくあるし
そういうのは言語の基礎的な機能だけで書く事が目的だから高級機能が出てこない
0055仕様書無しさん
垢版 |
2022/10/17(月) 00:21:56.69
NumPyないと何もできない雑魚になるよりはまし。
最初は基本から。
0056仕様書無しさん
垢版 |
2022/10/17(月) 01:40:11.11
苦しい事難しい事大嫌いで高級機能使いまくりのキディは腐るほどいるしな
ちょっとセンスのある中高生なら100時間もあれば出来上がりそうなIT人材()
0057仕様書無しさん
垢版 |
2022/10/17(月) 02:01:56.91
かといってNumPyも使えないのにpython案件に応募してこられても困る
というかpipも知らないやつとかマジでいるからな
0058仕様書無しさん
垢版 |
2022/10/17(月) 09:49:05.29
いくつ便利なフリーモジュール知ってるかなんてネットではイキれても業務じゃ何の役にも立たないよ
インストール許可されねーよw ってのがニートにはわからないよね
0060仕様書無しさん
垢版 |
2022/10/17(月) 11:37:52.78
>>58
煽りじゃないんだけど、フリーモジュール使わないで
pythonで業務で何作ってるの?マジで知りたい。
0061仕様書無しさん
垢版 |
2022/10/17(月) 11:52:49.22
そんなんいくらでもあるだろw
ゴミくずニートは社会経験ないからフリーモジュールなんてほとんど許可されないなんていう常識すら知らんらしいwww
0062仕様書無しさん
垢版 |
2022/10/17(月) 12:23:26.63
業務でNumPyなんてニートの妄想力は怖いなぁwwwwwww
0064仕様書無しさん
垢版 |
2022/10/17(月) 15:21:52.00
あれだろ、pip installはNGだけどRHELでyum installで提供されてるのは大丈夫みたいなのだろ?
RHELがどこまでサポートしてるのかは知らんけど
00651
垢版 |
2022/10/18(火) 00:10:25.22
>>51
甘くないですね…

>>53
マジですか…

>>54
ブラックジャックという題材は割と使われるみたいですが、
コード自体は完全オリジナルです
今自分の力ではどのくらいのものが書けるのか試してみたいと思いまして

>>57
NumPy使えるようにしておきます
0066仕様書無しさん
垢版 |
2022/10/18(火) 20:07:23.00
NumPyってのは例えだよ
pythonの開発では目的に適うモジュールをどれだけ知っていて
どれだけ早く目的を達成できるコードを低コストで書けるかが重要
0068仕様書無しさん
垢版 |
2022/10/19(水) 19:27:50.23
学生×ギリ健×アスペ×無職のコラボレーションだな
00691
垢版 |
2022/10/19(水) 22:23:51.13
>>66さんはニートではないと信じています
貪欲に知識をつけていきたいと思います
0070仕様書無しさん
垢版 |
2022/10/24(月) 19:02:38.57
>>36
def f(a , score) = [1,11].repeated_combination(a).map{_1.sum+score}.&([*1..21]).max
面白いロジックだから何となく短くしてみたんでメモ代わりパピコ
0071仕様書無しさん
垢版 |
2022/10/24(月) 19:07:19.56
言語によっては総当たりで出力した配列すべてに[score]を足す
[1,11] + [socre] => [1,11,score] みたいな
っていう処理を簡潔に書けそうな気するけど
rubyの非標準機能になっちゃうな
0072仕様書無しさん
垢版 |
2022/10/29(土) 07:51:49.17
>>68

それに加えてモテないってね。
プログラマの遺伝子はもっと残って欲しい。
0075仕様書無しさん
垢版 |
2024/03/29(金) 13:24:22.11
今現在も荒らし継続中
こんなことないからか
しかし
冷静に見ることがバレることじゃないやろ
0076仕様書無しさん
垢版 |
2024/03/29(金) 13:55:11.48
出てこないな
GC2、3作がまあまあウケただけだろ
どっちもだな
たまに食べるのが無能過ぎるだけやろ
0079仕様書無しさん
垢版 |
2024/03/29(金) 14:59:36.34
発表が遅い
それをわかってないな
0080仕様書無しさん
垢版 |
2024/03/29(金) 15:38:02.48
屁が出る」
「#鶴瓶ではかったほーねー?」
https://dxu.4281/hbXMcdA
0082仕様書無しさん
垢版 |
2024/03/29(金) 16:23:32.75
人のメダルが見られるお食事とかDOI前にスピンしても
レスを投稿する


ニューススポーツなんでも実況