大富翁(简版Python)

大富翁游戏(简版Python代码)
这是自己做着玩的,有兴趣的朋友可以试着玩,有些地方偷懒了,请多多包涵
地图是一个CSV文件(Map.csv:有些地图参数需要去阅读代码后可以理解)
内容如下:
0,Start,0,0,0,3
1,Postmonth St,1,100,1000,0
2,Charless St,1,1000,1500,0
3,M23,1,1030,2000,0
4,Mount Waverley Police Station,2,0,0,-1
5,Mummery St,1,1000,200,0
6,Willam St,1,2000,1500,0
7,Mount Waverley Shopping Center,4,0,0,2
8,Bruce St,1,200,10000,0
9,Gallery PI,1,2000,200,0
10,Valley Rd,1,9000,100,0
11,Petrol Station,3,0,0,1
12,Will Ave,1,1000,1000,0
13,Bond St,1,4000,5000,0
14,Ophir Rd,1,2200,1000,0
15,Walmarie Dr,1,2000,3000,0
16,Waverley Private hospital,2,0,0,-1
17,The Hwy,1,100,200,0
18,Saving Ave,1,3000,500,0
19,Genoa Ct,1,4000,4000,0

import random
import csv
num=random.randint(1,6)

def map_load(): #loading the game map from the map file(Map.csv)
  MapList=[]
  with open('Map.csv','r') as csvFile:
    reader = csv.reader(csvFile)
    #print(reader)
    for row in reader:
      Map_detail=row+['--','0']
      MapList.append(Map_detail)
  csvFile.close()
  return MapList
mapView=map_load()

def CreatUser(UserNum):# Create the players
  b=[]
  for i in range(UserNum):
    b.append([i,0,10000,0])
  return b

def SpecEx(Statu):#In the special area, the player will follow the area order that move front or back to another area, or stop one turn
  if(Statu=='-1'):
    print("you will stop on one turn!")
    return [0,-1]
  elif (Statu=='2'):
    luck=input("Try to get your Lucky(Y or N):")
    if(luck=='Y'):
      num=random.randint(1,6)
      if(num%2==0):
        result=random.randint(1,6)
        print("You are luck! Keep moving: "+str(result)+" Step")
        return [result,0]
      else:
        result=random.randint(1,6)
        print("Oh! Too bad You need back: "+str(result)+" Steps")
        return [-result,0]
    else:
      return [0,0]
  else:
    result=random.randint(1,6)
    print("You are luck! Keep moving: "+str(result)+" Step")
    return [result,0]

def moveplayer_mapCheck(Num,i):# To public area, the player will decide to pay the money for buying the area, building house, loaning the area to pass baced on the different situation
  if mapView[Num][5]=='0':
    if mapView[Num][6]=='--':
      print("Locate: "+mapView[Num][1]+" Area Price/Building Price: "+mapView[Num][3]+"/"+mapView[Num][4])#For make sure the situation of this area (The Area Price and Building Price)
      yn=input("Do you want to buy this area(Y or N):")
      if yn=='Y' and Player[i][2]>=int(mapView[Num][3]):
        mapView[Num][6]=str(i)
        Player[i][2]=Player[i][2]-int(mapView[Num][3])
      elif yn=='Y' and Player[i][2]<int(mapView[Num][3]):
        print("Sorry you haven't enoug money!")
      else:
        pass
    elif mapView[Num][6]==str(i):
      if(mapView[Num][7]=='0'):
        print("Locate: "+mapView[Num][1]+" Area Price/Building Price: "+mapView[Num][3]+"/"+mapView[Num][4])
        Byn=input("Do you want to bulid house(Y or N):")
        if Byn=='Y' and Player[i][2]>=int(mapView[Num][4]):
          Player[i][2]-=int(mapView[Num][4])
          mapView[Num][7]='1'
        elif Byn=='Y' and Player[i][2]<int(mapView[Num][4]):
          print("Sorry you haven't enoug money!")
        else:
          pass
    else:
      print("Locate: "+mapView[Num][1]+" Area Price/Building Price: "+mapView[Num][3]+"/"+mapView[Num][4])
      try_paid=input("Paid loan(L) or Paid the area(A):")
      if try_paid=='A' and Player[i][2]>=(int(mapView[Num][3])+int(mapView[Num][4]))*1.1 and mapView[Num][7]=='1':
        
        mapView[Num][7]='0'
        Player[i][2]-=(int(mapView[Num][4])+int(mapView[Num][4]))*1.1
        Player[int(mapView[Num][6])][2]+=(int(mapView[Num][4])+int(mapView[Num][4]))*1.1
        mapView[Num][6]=str(i)
        print("Paid is successful!")
      elif try_paid=='A' and Player[i][2]>=int(mapView[Num][3])*1.1 and mapView[Num][7]=='0':
        Player[i][2]-=int(mapView[Num][3])*1.1
        Player[int(mapView[Num][6])][2]+=int(mapView[Num][3])*1.1
        mapView[Num][6]=str(i)
        print("Paid is successful!")
      elif Player[i][2]>=(int(mapView[Num][3])+int(mapView[Num][4]))*0.01 and mapView[Num][7]=='1':
        Player[i][2]-=(int(mapView[Num][3])+int(mapView[Num][4]))*0.01
        Player[int(mapView[Num][6])][2]+=(int(mapView[Num][3])+int(mapView[Num][4]))*0.01
      elif Player[i][2]>=int(mapView[Num][3])*0.01 and mapView[Num][7]=='0':
        Player[i][2]-=int(mapView[Num][3])*0.01
        Player[int(mapView[Num][6])][2]+=int(mapView[Num][3])*0.01
      else:
        print("Your Game is over!!!")
        Player[i][3]=404
  else:
    res=SpecEx(mapView[Num][5])
    if res[0]==0:
      Player[i][3]=-1
    else:
      Player[i][1]=(Player[i][1]+20+res[0])%20
      moveplayer_mapCheck(Player[i][1],i)

#The Game begin.
UserNum=int(input("Enter the user Number:"))# identify the number of the players
Player=CreatUser(UserNum)# Create the player set

print("-----------------Player------------------")#show the player
for a in range(UserNum):
  print("Player: "+str(Player[a][0])+" local: "+str(Player[a][1])+" Money: "+str(Player[a][2]))
x=1# the variable for control whether the game is over 
while x==1:#Make sure whether the game is over
  data_rec=0
  for i in range(UserNum):
    n=0
    if Player[i][3]==0:
      while n==0:
        n=input("Play "+str(i)+" :Do you roll(yes/1 or No/0):")
      num=random.randint(1,6)#identify the number of the roll
      
      Player[i][1]=(num+int(Player[i][1]))%20
      moveplayer_mapCheck(Player[i][1],i)
      print("-----------------Player------------------")#show the location of the player in the map
      for i in range(UserNum):
        print("Player: "+str(Player[i][0])+" local: "+str(Player[i][1])+" Money: "+str(Player[i][2]))
      print("---------------MAP--------------------")#show the map
      for i in range(20):
        if(mapView[i][5]=='0'):
          print("Step: "+str(i)+" Locate: "+mapView[i][1]+" Area Price/Building Price: "+mapView[i][3]+"/"+mapView[i][4]+" Belonger: "+mapView[i][6]+" is_built :"+mapView[i][7])
        elif(mapView[i][5]=='-1'):
          print("Step: "+str(i)+" Locate: "+mapView[i][1]+" Thing: Please wait one turn")
        elif(mapView[i][5]=='1'):
          print("Step: "+str(i)+" Locate: "+mapView[i][1]+" Thing: Please roll again")
        elif(mapView[i][5]=='2'):
          print("Step: "+str(i)+" Locate: "+mapView[i][1]+" Thing: Good luck")
        else:
          print("Step: "+str(i)+" Locate: "+mapView[i][1]+" Thing: Starting")
      print("_____________________________________")
    elif Player[i][3]==-1:
      Player[i][3]=0
    else:
      pass
  for i in range(UserNum):
    if Player[i][3]==404:
      data_rec+=1
  if UserNum==data_rec+1:#make sure the game is over. Just one player is survive.
    x=0
    for i in range(UserNum):#make sure that who is Winner
      if Player[i][3]!=404:
        print("Player "+str(i+1)+"You are Winner!")
        break
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值