質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Linux Mint

Linux Mintは、使いやすいLinuxシステムの提供を目的としたLinuxディストリビューションです。UbuntuとDebianをベースにしており、Ubuntuのリポジトリを共有しています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1289閲覧

pythonで書いたミニゲームをGUI可したい。おすすめのライブラリやソフト

Untitled_Sample

総合スコア192

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Linux Mint

Linux Mintは、使いやすいLinuxシステムの提供を目的としたLinuxディストリビューションです。UbuntuとDebianをベースにしており、Ubuntuのリポジトリを共有しています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/06/26 09:47

編集2018/06/26 10:40

pythonで書いたミニゲームをGUI可したい。ので、
おすすめのライブラリやソフトを教えて下さい。

理想としては、配列とMAPとの動機が簡単で低スペックでも動作可能が良いです。
学習コストが低いモノだと助かります。

PCスペック
メモリー: 3.8 GiB
プロセッサー Intel® Core™ i3-2120 CPU @ 3.30GHz × 4

#GUI化したいミニゲーム

python

1 2 3 4 5""" 6ポイント貯め 725ポイント以上でゲーム終了 8 9ブロックの種類 3種類+説明 10 111A 12自分のターンでサイコロの値が1か3なら+1ポイント増える 13内部構造 MAPに配置しているブロック数*1 14 152A 2A 16自分のターンでサイコロの値が2か4なら+2ポイント増える 17内部構造 MAPに配置している(ブロック数/2)*2 18 193A 3A 3A 20誰のターンでもOK サイコロの値が3か6なら+1ポイント増える 21内部構造 MAPに配置している(ブロック数/3)*1 22 23 24ルール 25交互に3種類の中からブロックを選び配置して行く 26一度配置されたブロックは動かない 27ブロックの置き換え不可能 28配置位置がMAPから外の場合は無効 29ブロックの種類が0,1,2 以外なら失敗扱いで次のユーザーへ 30MAP上が全て埋まってもポイント達成まで、ターンが流れる 31横に置く場合は0 縦に置く場合1 32 33 34攻略 35ポイント効率を考えると2番目のブロックが最適です。 36長期戦を狙い相手の邪魔をしたいなら3番目のブロックが都合が良いでしょう。 37何処にでも配置できる1番目のブロックは終盤で配置して行く形が定石です。 38 39 40入力形式 41横 縦 ブロックの種類 横か縦 420 0 0 0 43 44""" 45 46 47 48 49 50#sleep(0.2) 51import random 52import collections 53from time import sleep 54from pprint import pprint 55 56 57 58# ターン判定用 59saikoro=0 60# ユーザースコア 61Demo_Use1=0 62Demo_Use2=0 63# ユーザー入力用 配列 64Horizontal_or_Vertical=[] 65# サイコロの値を格納する配列 66Dice=[i for i in range(1,6)] 67# ユーザー別 ブロックの種類など 68r1=[['1A'],['2A','2A'],['3A','3A','3A']] 69r2=[['1B'],['2B','2B'],['3B','3B','3B']] 70# MAP 5*5=25マス 71l = [['0' for i in range(5)] for j in range(5)] 72 73 74 75# 横 side ユーザーA Use1 76def Sample_Demo_New_Bloku2(x,y,z): 77 for i in range(len(z)): 78 if l[x][y+i]=='0': 79 l[x][y+i]=r1[r1.index(z)][i] 80 else:pass 81 82#Sample_Demo_New_Bloku2(0,0,r1[1]) 83 84# 縦 Vertical ユーザーA Use1 85def Sample_Demo_New_Bloku3(x,y,z): 86 for i in range(len(z)): 87 if l[x+i][y]=='0': 88 l[x+i][y]=r1[r1.index(z)][i] 89 else:pass 90 91#Sample_Demo_New_Bloku3(0,0,r1[1]) 92 93 94 95# 横 side ユーザーB Use2 96def Sample_Demo_New_Bloku4(x,y,z): 97 for i in range(len(z)): 98 if l[x][y+i]=='0': 99 l[x][y+i]=r2[r2.index(z)][i] 100 else:pass 101 102#Sample_Demo_New_Bloku2(0,0,r1[1]) 103 104# 縦 Vertical ユーザーB Use2 105def Sample_Demo_New_Bloku5(x,y,z): 106 for i in range(len(z)): 107 if l[x+i][y]=='0': 108 l[x+i][y]=r2[r2.index(z)][i] 109 else:pass 110 111#Sample_Demo_New_Bloku3(0,0,r1[1]) 112 113 114 115 116 117 118# 各MAP要素の合計 119def Sample_Demo_New_Bloku_Initialization(): 120 c=[] 121 for i in range(len(l)): 122 c.append(collections.Counter(l[i])) 123 for j in range(len(c)-1): 124 c[0]+=c[j+1] 125 return c[0] 126 127#T=Sample_Demo_New_Bloku_Initialization() 128#print(T.keys(),T.values()) 129 130# サイコロの値 131def Sample_Demo_New_Bloku_Random_Number(): 132 global Dice 133 return random.choice(Dice) 134 135#Q=Sample_Demo_New_Bloku_Random_Number() 136#print(Q) 137 138 139 140 141# MAPからポイント判定用素材の準備 142def Sample_Demo_New_Bloku_Scoring(): 143 global Demo_Use1,Demo_Use2 144 for k,v in T.items(): 145 #print(k,v) 146 if Q==1 or Q==3: 147 if saikoro%2==1: 148 if k=='1A': 149 Demo_Use1+=1*v 150 if saikoro%2==0: 151 if k=='1B': 152 Demo_Use2+=1*v 153 154 if Q==2 or Q==4: 155 if saikoro%2==1: 156 if k=='2A': 157 Demo_Use1+=2*(v/2) 158 if saikoro%2==0: 159 if k=='2B': 160 Demo_Use2+=2*(v/2) 161 162 if Q==3 or Q==6: 163 if k=='3A': 164 Demo_Use1+=1*(v/3) 165 if k=='3B': 166 Demo_Use2+=1*(v/3) 167 168 return(int(Demo_Use1),int(Demo_Use2)) 169 170 171#Sample_Demo_New_Bloku_Scoring() 172 173 174 175""" 176 177Main (仮) 178 179""" 180 181# ユーザーのどちらかが、25ポイント以上なら終了 182while int(Demo_Use1)<=25 or int(Demo_Use2)<=25: 183 # ターン処理 184 saikoro+=1 185 # 操作コメント 186 print('横x 縦y ブロック番号 縦か横 [0 or1]') 187 # 実際のユーザー入力 188 Horizontal_or_Vertical=list(map(int,input().split())) 189 # ターンによるユーザー分け 190 if saikoro%2==1: 191 print('ユーザー Aのターン') 192 try: 193 if Horizontal_or_Vertical[-1]==0: 194 Sample_Demo_New_Bloku2(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r1[Horizontal_or_Vertical[2]]) 195 elif Horizontal_or_Vertical[-1]==1: 196 Sample_Demo_New_Bloku3(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r1[Horizontal_or_Vertical[2]]) 197 except IndexError: 198 pass 199 elif saikoro%2==0: 200 print('ユーザー Bのターン') 201 try: 202 if Horizontal_or_Vertical[-1]==0: 203 Sample_Demo_New_Bloku4(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r2[Horizontal_or_Vertical[2]]) 204 elif Horizontal_or_Vertical[-1]==1: 205 Sample_Demo_New_Bloku5(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r2[Horizontal_or_Vertical[2]]) 206 except IndexError: 207 pass 208 # MAP要素のカウント 209 T=Sample_Demo_New_Bloku_Initialization() 210 # 毎ターン振られるサイコロの目 211 Q=Sample_Demo_New_Bloku_Random_Number() 212 print('サイコロの目',Q) 213 # 各ユーザーの 現在のスコア 214 print('スコア',Sample_Demo_New_Bloku_Scoring()) 215 # MAP表示 216 pprint(l) 217 218 219 220""" 221# ユーザー 処理 222def Sample_Demo_New_Bloku1(x,y,z,W,G): 223 if G==0: 224 for i in range(len(z)): 225 if l[x][y+i]=='0': 226 l[x][y+i]=W[W.index(z)][i] 227 else:pass 228 elif G==1: 229 for i in range(len(z)): 230 if l[x+i][y]=='0': 231 l[x+i][y]=W[W.index(z)][i] 232 else:pass 233 234 235 # ターンによるユーザー分け 236 if saikoro%2==1: 237 print('ユーザー Aのターン') 238 try: 239 if Horizontal_or_Vertical[-1]==0: 240 Sample_Demo_New_Bloku1(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r1[Horizontal_or_Vertical[2]],r1,0) 241 except IndexError: 242 pass 243 elif saikoro%2==0: 244 print('ユーザー Bのターン') 245 try: 246 if Horizontal_or_Vertical[-1]==0: 247 Sample_Demo_New_Bloku1(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r2[Horizontal_or_Vertical[2]],r2,0) 248 except IndexError: 249 pass 250 251""" 252 253 254 255

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

pygameなんて如何でしょ。
tkinterとかでも良さそうですが。

投稿2018/06/26 10:09

Watachan

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Untitled_Sample

2018/06/26 10:41

可能なら、マルチプラットフォームが良いかなーとは思ってます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問