"""
ポイント貯め
25ポイント以上でゲーム終了
ブロックの種類 3種類+説明
1A
自分のターンでサイコロの値が1か3なら+1ポイント増える
内部構造 MAPに配置しているブロック数*1
2A 2A
自分のターンでサイコロの値が2か4なら+2ポイント増える
内部構造 MAPに配置している(ブロック数/2)*2
3A 3A 3A
誰のターンでもOK サイコロの値が3か6なら+1ポイント増える
内部構造 MAPに配置している(ブロック数/3)*1
ルール
交互に3種類の中からブロックを選び配置して行く
一度配置されたブロックは動かない
ブロックの置き換え不可能
配置位置がMAPから外の場合は無効
ブロックの種類が0,1,2 以外なら失敗扱いで次のユーザーへ
MAP上が全て埋まってもポイント達成まで、ターンが流れる
横に置く場合は0 縦に置く場合1
攻略
ポイント効率を考えると2番目のブロックが最適です。
長期戦を狙い相手の邪魔をしたいなら3番目のブロックが都合が良いでしょう。
何処にでも配置できる1番目のブロックは終盤で配置して行く形が定石です。
入力形式
横 縦 ブロックの種類 横[0]か縦[1]
0 0 0 0
"""
#sleep(0.2)
import random
import collections
from time import sleep
from pprint import pprint
# ターン判定用
saikoro=0
# ユーザースコア
Demo_Use1=0
Demo_Use2=0
# ユーザー入力用 配列
Horizontal_or_Vertical=[]
# サイコロの値を格納する配列
Dice=[i for i in range(1,6)]
# ユーザー別 ブロックの種類など
r1=[['1A'],['2A','2A'],['3A','3A','3A']]
r2=[['1B'],['2B','2B'],['3B','3B','3B']]
# MAP 5*5=25マス
l = [['0' for i in range(5)] for j in range(5)]
# 横 side ユーザーA Use1
def Sample_Demo_New_Bloku2(x,y,z):
for i in range(len(z)):
if l[x][y+i]=='0':
l[x][y+i]=r1[r1.index(z)][i]
else:pass
#Sample_Demo_New_Bloku2(0,0,r1[1])
# 縦 Vertical ユーザーA Use1
def Sample_Demo_New_Bloku3(x,y,z):
for i in range(len(z)):
if l[x+i][y]=='0':
l[x+i][y]=r1[r1.index(z)][i]
else:pass
#Sample_Demo_New_Bloku3(0,0,r1[1])
# 横 side ユーザーB Use2
def Sample_Demo_New_Bloku4(x,y,z):
for i in range(len(z)):
if l[x][y+i]=='0':
l[x][y+i]=r2[r2.index(z)][i]
else:pass
#Sample_Demo_New_Bloku2(0,0,r1[1])
# 縦 Vertical ユーザーB Use2
def Sample_Demo_New_Bloku5(x,y,z):
for i in range(len(z)):
if l[x+i][y]=='0':
l[x+i][y]=r2[r2.index(z)][i]
else:pass
#Sample_Demo_New_Bloku3(0,0,r1[1])
# 各MAP要素の合計
def Sample_Demo_New_Bloku_Initialization():
c=[]
for i in range(len(l)):
c.append(collections.Counter(l[i]))
for j in range(len(c)-1):
c[0]+=c[j+1]
return c[0]
#T=Sample_Demo_New_Bloku_Initialization()
#print(T.keys(),T.values())
# サイコロの値
def Sample_Demo_New_Bloku_Random_Number():
global Dice
return random.choice(Dice)
#Q=Sample_Demo_New_Bloku_Random_Number()
#print(Q)
# MAPからポイント判定用素材の準備
def Sample_Demo_New_Bloku_Scoring():
global Demo_Use1,Demo_Use2
for k,v in T.items():
#print(k,v)
if Q==1 or Q==3:
if saikoro%2==1:
if k=='1A':
Demo_Use1+=1*v
if saikoro%2==0:
if k=='1B':
Demo_Use2+=1*v
if Q==2 or Q==4:
if saikoro%2==1:
if k=='2A':
Demo_Use1+=2*(v/2)
if saikoro%2==0:
if k=='2B':
Demo_Use2+=2*(v/2)
if Q==3 or Q==6:
if k=='3A':
Demo_Use1+=1*(v/3)
if k=='3B':
Demo_Use2+=1*(v/3)
return(int(Demo_Use1),int(Demo_Use2))
#Sample_Demo_New_Bloku_Scoring()
"""
Main (仮)
"""
# ユーザーのどちらかが、25ポイント以上なら終了
while int(Demo_Use1)<=25 or int(Demo_Use2)<=25:
# ターン処理
saikoro+=1
# 操作コメント
print('横x 縦y ブロック番号 縦か横 [0 or1]')
# 実際のユーザー入力
Horizontal_or_Vertical=list(map(int,input().split()))
# ターンによるユーザー分け
if saikoro%2==1:
print('ユーザー Aのターン')
try:
if Horizontal_or_Vertical[-1]==0:
Sample_Demo_New_Bloku2(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r1[Horizontal_or_Vertical[2]])
elif Horizontal_or_Vertical[-1]==1:
Sample_Demo_New_Bloku3(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r1[Horizontal_or_Vertical[2]])
except IndexError:
pass
elif saikoro%2==0:
print('ユーザー Bのターン')
try:
if Horizontal_or_Vertical[-1]==0:
Sample_Demo_New_Bloku4(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r2[Horizontal_or_Vertical[2]])
elif Horizontal_or_Vertical[-1]==1:
Sample_Demo_New_Bloku5(Horizontal_or_Vertical[0],Horizontal_or_Vertical[1],r2[Horizontal_or_Vertical[2]])
except IndexError:
pass
# MAP要素のカウント
T=Sample_Demo_New_Bloku_Initialization()
# 毎ターン振られるサイコロの目
Q=Sample_Demo_New_Bloku_Random_Number()
print('サイコロの目',Q)
# 各ユーザーの 現在のスコア
print('スコア',Sample_Demo_New_Bloku_Scoring())
# MAP表示
pprint(l)
IiIiCuODneOCpOODs+ODiOiyr+OCgQoyNeODneOCpOODs+ODiOS7peS4iuOBp+OCsuODvOODoOe1guS6hgoK44OW44Ot44OD44Kv44Gu56iu6aGe44CAM+eorumhnu+8i+iqrOaYjgoKMUEK6Ieq5YiG44Gu44K/44O844Oz44Gn44K144Kk44Kz44Ot44Gu5YCk44GMMeOBizPjgarjgonvvIsx44Od44Kk44Oz44OI5aKX44GI44KLCuWGhemDqOani+mAoOOAgE1BUOOBq+mFjee9ruOBl+OBpuOBhOOCi+ODluODreODg+OCr+aVsO+8iu+8kQoKMkEgMkEK6Ieq5YiG44Gu44K/44O844Oz44Gn44K144Kk44Kz44Ot44Gu5YCk44GMMuOBizTjgarjgonvvIvvvJLjg53jgqTjg7Pjg4jlopfjgYjjgosK5YaF6YOo5qeL6YCg44CATUFQ44Gr6YWN572u44GX44Gm44GE44KLKOODluODreODg+OCr+aVsC8yKe+8iu+8kgoKM0EgM0EgM0EK6Kqw44Gu44K/44O844Oz44Gn44KCT0vjgIDjgrXjgqTjgrPjg63jga7lgKTjgYwz44GL77yW44Gq44KJ77yL77yR44Od44Kk44Oz44OI5aKX44GI44KLCuWGhemDqOani+mAoOOAgE1BUOOBq+mFjee9ruOBl+OBpuOBhOOCiyjjg5bjg63jg4Pjgq/mlbAvMykqMQoKCuODq+ODvOODqwrkuqTkupLjgavvvJPnqK7poZ7jga7kuK3jgYvjgonjg5bjg63jg4Pjgq/jgpLpgbjjgbPphY3nva7jgZfjgabooYzjgY8K5LiA5bqm6YWN572u44GV44KM44Gf44OW44Ot44OD44Kv44Gv5YuV44GL44Gq44GECuODluODreODg+OCr+OBrue9ruOBjeaPm+OBiOS4jeWPr+iDvQrphY3nva7kvY3nva7jgYxNQVDjgYvjgonlpJbjga7loLTlkIjjga/nhKHlirkK44OW44Ot44OD44Kv44Gu56iu6aGe44GMMCwxLDLjgIDku6XlpJbjgarjgonlpLHmlZfmibHjgYTjgafmrKHjga7jg6bjg7zjgrbjg7zjgbgKTUFQ5LiK44GM5YWo44Gm5Z+L44G+44Gj44Gm44KC44Od44Kk44Oz44OI6YGU5oiQ44G+44Gn44CB44K/44O844Oz44GM5rWB44KM44KLCuaoquOBq+e9ruOBj+WgtOWQiOOBr++8kOOAgOe4puOBq+e9ruOBj+WgtOWQiO+8kQoKCuaUu+eVpQrjg53jgqTjg7Pjg4jlirnnjofjgpLogIPjgYjjgovjgajvvJLnlarnm67jga7jg5bjg63jg4Pjgq/jgYzmnIDpganjgafjgZnjgIIK6ZW35pyf5oim44KS54uZ44GE55u45omL44Gu6YKq6a2U44KS44GX44Gf44GE44Gq44KJ77yT55Wq55uu44Gu44OW44Ot44OD44Kv44GM6YO95ZCI44GM6Imv44GE44Gn44GX44KH44GG44CCCuS9leWHpuOBq+OBp+OCgumFjee9ruOBp+OBjeOCi++8keeVquebruOBruODluODreODg+OCr+OBr+e1guebpOOBp+mFjee9ruOBl+OBpuihjOOBj+W9ouOBjOWumuefs+OBp+OBmeOAggoKCuWFpeWKm+W9ouW8jwrmqKrjgIDnuKbjgIDjg5bjg63jg4Pjgq/jga7nqK7poZ7jgIDmqKpbMF3jgYvnuKZbMV0KMCAwIDAgMAoKIiIiCgoKCgoKI3NsZWVwKDAuMikKaW1wb3J0IHJhbmRvbQppbXBvcnQgY29sbGVjdGlvbnMKZnJvbSB0aW1lIGltcG9ydCBzbGVlcApmcm9tIHBwcmludCBpbXBvcnQgcHByaW50CgoKCiMg44K/44O844Oz5Yik5a6a55SoCnNhaWtvcm89MAojIOODpuODvOOCtuODvOOCueOCs+OCogpEZW1vX1VzZTE9MApEZW1vX1VzZTI9MAojIOODpuODvOOCtuODvOWFpeWKm+eUqOOAgOmFjeWIlwpIb3Jpem9udGFsX29yX1ZlcnRpY2FsPVtdCiMg44K144Kk44Kz44Ot44Gu5YCk44KS5qC857SN44GZ44KL6YWN5YiXCkRpY2U9W2kgZm9yIGkgaW4gcmFuZ2UoMSw2KV0KIyDjg6bjg7zjgrbjg7zliKXjgIDjg5bjg63jg4Pjgq/jga7nqK7poZ7jgarjgakKcjE9W1snMUEnXSxbJzJBJywnMkEnXSxbJzNBJywnM0EnLCczQSddXQpyMj1bWycxQiddLFsnMkInLCcyQiddLFsnM0InLCczQicsJzNCJ11dCiMgTUFQIDUqNT0yNeODnuOCuQpsID0gW1snMCcgZm9yIGkgaW4gcmFuZ2UoNSldIGZvciBqIGluIHJhbmdlKDUpXQoKCgojIOaoqiBzaWRlIOODpuODvOOCtuODvEEgVXNlMQpkZWYgU2FtcGxlX0RlbW9fTmV3X0Jsb2t1Mih4LHkseik6CiAgICBmb3IgaSBpbiByYW5nZShsZW4oeikpOgogICAgICAgIGlmIGxbeF1beStpXT09JzAnOgogICAgICAgICAgICBsW3hdW3kraV09cjFbcjEuaW5kZXgoeildW2ldCiAgICAgICAgZWxzZTpwYXNzCgojU2FtcGxlX0RlbW9fTmV3X0Jsb2t1MigwLDAscjFbMV0pCgojIOe4piBWZXJ0aWNhbCDjg6bjg7zjgrbjg7xBIFVzZTEKZGVmIFNhbXBsZV9EZW1vX05ld19CbG9rdTMoeCx5LHopOgogICAgZm9yIGkgaW4gcmFuZ2UobGVuKHopKToKICAgICAgICBpZiBsW3graV1beV09PScwJzoKICAgICAgICAgICAgbFt4K2ldW3ldPXIxW3IxLmluZGV4KHopXVtpXQogICAgICAgIGVsc2U6cGFzcwoKI1NhbXBsZV9EZW1vX05ld19CbG9rdTMoMCwwLHIxWzFdKQoKCgojIOaoqiBzaWRlIOODpuODvOOCtuODvEIgVXNlMgpkZWYgU2FtcGxlX0RlbW9fTmV3X0Jsb2t1NCh4LHkseik6CiAgICBmb3IgaSBpbiByYW5nZShsZW4oeikpOgogICAgICAgIGlmIGxbeF1beStpXT09JzAnOgogICAgICAgICAgICBsW3hdW3kraV09cjJbcjIuaW5kZXgoeildW2ldCiAgICAgICAgZWxzZTpwYXNzCgojU2FtcGxlX0RlbW9fTmV3X0Jsb2t1MigwLDAscjFbMV0pCgojIOe4piBWZXJ0aWNhbCDjg6bjg7zjgrbjg7xCIFVzZTIKZGVmIFNhbXBsZV9EZW1vX05ld19CbG9rdTUoeCx5LHopOgogICAgZm9yIGkgaW4gcmFuZ2UobGVuKHopKToKICAgICAgICBpZiBsW3graV1beV09PScwJzoKICAgICAgICAgICAgbFt4K2ldW3ldPXIyW3IyLmluZGV4KHopXVtpXQogICAgICAgIGVsc2U6cGFzcwoKI1NhbXBsZV9EZW1vX05ld19CbG9rdTMoMCwwLHIxWzFdKQoKCgoKCgojIOWQhE1BUOimgee0oOOBruWQiOioiApkZWYgU2FtcGxlX0RlbW9fTmV3X0Jsb2t1X0luaXRpYWxpemF0aW9uKCk6CiAgICBjPVtdCiAgICBmb3IgaSBpbiByYW5nZShsZW4obCkpOgogICAgICAgIGMuYXBwZW5kKGNvbGxlY3Rpb25zLkNvdW50ZXIobFtpXSkpCiAgICBmb3IgaiBpbiByYW5nZShsZW4oYyktMSk6CiAgICAgICAgY1swXSs9Y1tqKzFdCiAgICByZXR1cm4gY1swXQoKI1Q9U2FtcGxlX0RlbW9fTmV3X0Jsb2t1X0luaXRpYWxpemF0aW9uKCkKI3ByaW50KFQua2V5cygpLFQudmFsdWVzKCkpCgojIOOCteOCpOOCs+ODreOBruWApApkZWYgU2FtcGxlX0RlbW9fTmV3X0Jsb2t1X1JhbmRvbV9OdW1iZXIoKToKICAgIGdsb2JhbCBEaWNlCiAgICByZXR1cm4gcmFuZG9tLmNob2ljZShEaWNlKQoKI1E9U2FtcGxlX0RlbW9fTmV3X0Jsb2t1X1JhbmRvbV9OdW1iZXIoKQojcHJpbnQoUSkKCgoKCiMgTUFQ44GL44KJ44Od44Kk44Oz44OI5Yik5a6a55So57Sg5p2Q44Gu5rqW5YKZCmRlZiBTYW1wbGVfRGVtb19OZXdfQmxva3VfU2NvcmluZygpOgogICAgZ2xvYmFsIERlbW9fVXNlMSxEZW1vX1VzZTIKICAgIGZvciBrLHYgaW4gVC5pdGVtcygpOgogICAgICAgICNwcmludChrLHYpCiAgICAgICAgaWYgUT09MSBvciBRPT0zOgogICAgICAgICAgICBpZiBzYWlrb3JvJTI9PTE6CiAgICAgICAgICAgICAgICBpZiBrPT0nMUEnOgogICAgICAgICAgICAgICAgICAgIERlbW9fVXNlMSs9MSp2CiAgICAgICAgICAgIGlmIHNhaWtvcm8lMj09MDoKICAgICAgICAgICAgICAgIGlmIGs9PScxQic6CiAgICAgICAgICAgICAgICAgICAgRGVtb19Vc2UyKz0xKnYKCiAgICAgICAgaWYgUT09MiBvciBRPT00OgogICAgICAgICAgICBpZiBzYWlrb3JvJTI9PTE6CiAgICAgICAgICAgICAgICBpZiBrPT0nMkEnOgogICAgICAgICAgICAgICAgICAgIERlbW9fVXNlMSs9Mioodi8yKQogICAgICAgICAgICBpZiBzYWlrb3JvJTI9PTA6CiAgICAgICAgICAgICAgICBpZiBrPT0nMkInOgogICAgICAgICAgICAgICAgICAgIERlbW9fVXNlMis9Mioodi8yKQoKICAgICAgICBpZiBRPT0zIG9yIFE9PTY6CiAgICAgICAgICAgIGlmIGs9PSczQSc6CiAgICAgICAgICAgICAgICBEZW1vX1VzZTErPTEqKHYvMykKICAgICAgICAgICAgaWYgaz09JzNCJzoKICAgICAgICAgICAgICAgIERlbW9fVXNlMis9MSoodi8zKQoKICAgIHJldHVybihpbnQoRGVtb19Vc2UxKSxpbnQoRGVtb19Vc2UyKSkKCgojU2FtcGxlX0RlbW9fTmV3X0Jsb2t1X1Njb3JpbmcoKQoKCgoiIiIKCk1haW4gKOS7rikKCiIiIgoKIyDjg6bjg7zjgrbjg7zjga7jganjgaHjgonjgYvjgYzjgIHvvJLvvJXjg53jgqTjg7Pjg4jku6XkuIrjgarjgonntYLkuoYKd2hpbGUgaW50KERlbW9fVXNlMSk8PTI1IG9yIGludChEZW1vX1VzZTIpPD0yNToKICAgICMg44K/44O844Oz5Yem55CGCiAgICBzYWlrb3JvKz0xCiAgICAjIOaTjeS9nOOCs+ODoeODs+ODiAogICAgcHJpbnQoJ+aoqngg57imeSDjg5bjg63jg4Pjgq/nlarlj7cg57im44GL5qiqIFswIG9yMV0nKQogICAgIyDlrp/pmpvjga7jg6bjg7zjgrbjg7zlhaXlipsKICAgIEhvcml6b250YWxfb3JfVmVydGljYWw9bGlzdChtYXAoaW50LGlucHV0KCkuc3BsaXQoKSkpCiAgICAjIOOCv+ODvOODs+OBq+OCiOOCi+ODpuODvOOCtuODvOWIhuOBkQogICAgaWYgc2Fpa29ybyUyPT0xOgogICAgICAgIHByaW50KCfjg6bjg7zjgrbjg7wgQeOBruOCv+ODvOODsycpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBIb3Jpem9udGFsX29yX1ZlcnRpY2FsWy0xXT09MDoKICAgICAgICAgICAgICAgIFNhbXBsZV9EZW1vX05ld19CbG9rdTIoSG9yaXpvbnRhbF9vcl9WZXJ0aWNhbFswXSxIb3Jpem9udGFsX29yX1ZlcnRpY2FsWzFdLHIxW0hvcml6b250YWxfb3JfVmVydGljYWxbMl1dKQogICAgICAgICAgICBlbGlmIEhvcml6b250YWxfb3JfVmVydGljYWxbLTFdPT0xOgogICAgICAgICAgICAgICAgU2FtcGxlX0RlbW9fTmV3X0Jsb2t1MyhIb3Jpem9udGFsX29yX1ZlcnRpY2FsWzBdLEhvcml6b250YWxfb3JfVmVydGljYWxbMV0scjFbSG9yaXpvbnRhbF9vcl9WZXJ0aWNhbFsyXV0pCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgIGVsaWYgc2Fpa29ybyUyPT0wOgogICAgICAgIHByaW50KCfjg6bjg7zjgrbjg7wgQuOBruOCv+ODvOODsycpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBIb3Jpem9udGFsX29yX1ZlcnRpY2FsWy0xXT09MDoKICAgICAgICAgICAgICAgIFNhbXBsZV9EZW1vX05ld19CbG9rdTQoSG9yaXpvbnRhbF9vcl9WZXJ0aWNhbFswXSxIb3Jpem9udGFsX29yX1ZlcnRpY2FsWzFdLHIyW0hvcml6b250YWxfb3JfVmVydGljYWxbMl1dKQogICAgICAgICAgICBlbGlmIEhvcml6b250YWxfb3JfVmVydGljYWxbLTFdPT0xOgogICAgICAgICAgICAgICAgU2FtcGxlX0RlbW9fTmV3X0Jsb2t1NShIb3Jpem9udGFsX29yX1ZlcnRpY2FsWzBdLEhvcml6b250YWxfb3JfVmVydGljYWxbMV0scjJbSG9yaXpvbnRhbF9vcl9WZXJ0aWNhbFsyXV0pCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICMgTUFQ6KaB57Sg44Gu44Kr44Km44Oz44OICiAgICBUPVNhbXBsZV9EZW1vX05ld19CbG9rdV9Jbml0aWFsaXphdGlvbigpCiAgICAjIOavjuOCv+ODvOODs+aMr+OCieOCjOOCi+OCteOCpOOCs+ODreOBruebrgogICAgUT1TYW1wbGVfRGVtb19OZXdfQmxva3VfUmFuZG9tX051bWJlcigpCiAgICBwcmludCgn44K144Kk44Kz44Ot44Gu55uuJyxRKQogICAgIyDlkITjg6bjg7zjgrbjg7zjga7jgIDnj77lnKjjga7jgrnjgrPjgqIKICAgIHByaW50KCfjgrnjgrPjgqInLFNhbXBsZV9EZW1vX05ld19CbG9rdV9TY29yaW5nKCkpCiAgICAjIE1BUOihqOekugogICAgcHByaW50KGwpCgo=