Advertisement
Guest User

Untitled

a guest
Mar 30th, 2015
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.30 KB | None | 0 0
  1. # IMPORT
  2. from random import randint
  3. from time import sleep
  4.  
  5. class Turtle(object):
  6. def attack(self):
  7. for i in ent:
  8. if i != self.name:
  9. # print()
  10. # Accuracy
  11. if randint(0, 100) < self.acc - dc[i].ev:
  12. # Critical Hits
  13. if randint(0, 100) < self.crit:
  14. self.ch = True
  15. else:
  16. self.ch = False
  17. self.hit = randint(self.atk[0], self.atk[1])
  18. if self.ch:
  19. # print('CRITICAL HIT!', self.name, 'attacks for', self.hit * 2, 'damage.')
  20. dc[i].hp -= self.hit * 2
  21. else:
  22. # print('HYAH!', self.name, 'attacks for', self.hit, 'damage.')
  23. dc[i].hp -= self.hit
  24. # print(dc[i].name + "'s HP:", dc[i].hp)
  25. else:
  26. pass
  27. # print(self.name, 'missed!')
  28.  
  29. # Characters
  30. class Bunny(Turtle):
  31. def __init__(self):
  32. self.spd = randint(10,12)
  33. self.atk = (10,12)
  34. self.hp = randint(46,56)
  35. self.acc = 90
  36. self.ev = 20
  37. self.crit = 25
  38. self.name = 'Bunny'
  39.  
  40. class Jellyfish(Turtle):
  41. def __init__(self):
  42. self.spd = randint(9, 11)
  43. self.atk = (13, 19)
  44. self.hp = randint(38, 48)
  45. self.acc = 95
  46. self.ev = 30
  47. self.crit = 10
  48. self.name = 'Jellyfish'
  49.  
  50. class Penguin(Turtle):
  51. def __init__(self):
  52. self.spd = randint(11, 13)
  53. self.atk = (7, 18)
  54. self.hp = randint(46, 56)
  55. self.acc = 90
  56. self.ev = 30
  57. self.crit = 10
  58. self.name = 'Penguin'
  59.  
  60. class Turtle(Turtle):
  61. def __init__(self):
  62. self.spd = randint(8, 10)
  63. self.atk = (10, 13)
  64. self.hp = randint(50, 66)
  65. self.acc = 125
  66. self.ev = 10
  67. self.crit = 0
  68. self.name = 'Turtle'
  69.  
  70. # BETTING CLASSES
  71. class Player(object):
  72. def __init__(self,typ):
  73. self.typ = typ
  74. self.pocket = 100
  75. self.bet = 0
  76. self.wins = 0
  77. self.total = 0
  78.  
  79. def end(self,wl):
  80. if wl == True:
  81. self.wins += 1
  82. self.pocket += (0.1 * self.wins * self.bet) + (self.bet * 2)
  83. if wl == False:
  84. self.pocket -= 0.05 * (self.total - self.wins) * self.bet
  85. self.total += 1
  86. self.bet = 0
  87.  
  88. def betv(self,who,amt=0):
  89. # CURRENTLY BOT TARGET = PLAYER TARGET. REMOVE THAT BELOW AND USE A DEFAULT (0) TO FILL, PICK HIGHEST % WINS (INSIDE FUNC).
  90. self.tar = who
  91. if self.typ == 'player' or self.typ == 'player1':
  92. self.bet = amt
  93. if amt <= self.pocket:
  94. self.bet = amt
  95. self.pocket -= self.bet
  96. else:
  97. raise ValueError('Invalid Input')
  98. else:
  99. for i in pla:
  100. if i != self.typ:
  101. self.botbet = pc[i].bet * (randint(80,120)/100)
  102. if pc[i].bet * .8 > self.pocket:
  103. self.botbet = self.pocket * (randint(0,80)/100)
  104. if self.botbet <= self.pocket:
  105. self.bet = self.botbet
  106. self.pocket -= self.bet
  107.  
  108. # Functions
  109. def createChars(name,name1):
  110. global fight1,fight2,ent,dc,cd
  111. fight1 = cl[name]()
  112. fight2 = cl[name1]()
  113. ent = [name,name1]
  114. dc = {name: fight1,name1:fight2}
  115. cd = {'fight1':fight1,'fight2':fight2}
  116.  
  117. def createPlayer(typ,typ1):
  118. global player,player1,pla,pc,cp
  119. player = Player(typ)
  120. player1 = Player(typ1)
  121. pla = [typ,typ1]
  122. pc = {typ:player,typ1:player1}
  123. cp = {'player':player,'player1':player1}
  124.  
  125. # Variables
  126. cl = {'Bunny':Bunny,'Jellyfish':Jellyfish,'Penguin':Penguin,'Turtle':Turtle}
  127. cL = ['Bunny','Jellyfish','Penguin','Turtle']
  128.  
  129. # Logic
  130. #print('-------------------------------')
  131. #print('-------------WARNING-----------')
  132. #print('-------------------------------')
  133. #print('BETTING TARGET MUST BE PRECISE ')
  134. #print('No way to easily catch mistakes')
  135. #input('---Press any key to continue---')
  136. while True:
  137. try:
  138. types = int(input('\nEnter 1 to play against Bot, 2 to play against second player. '))
  139. if types == 1:
  140. createPlayer('player','bot')
  141. elif types == 2:
  142. createPlayer('player','player')
  143. else:
  144. print('Invalid Input')
  145. continue
  146. break
  147. except:
  148. pass
  149. while True:
  150. # Generate Characters
  151. fig,fig1 = 0,0
  152. while fig == fig1:
  153. fig = randint(0,len(cL)-1)
  154. fig1 = randint(0,len(cL)-1)
  155. print('\n'+cL[fig],'v',cL[fig1])
  156. fiG = ['fig','fig1']
  157. FiG = {'fig':fig,'fig1':fig1}
  158. createChars(cL[fig],cL[fig1])
  159.  
  160. # Betting Loop (Based on Game Type)
  161. # v Bot
  162. if types == 1:
  163. while True:
  164. try:
  165. playertar = input('\nWho would you like to bet on? ')
  166. playerinp = float(input('\nYou have $%.2f. Enter amount to bet: $'%(player.pocket)))
  167. player.betv(playertar,playerinp)
  168. except ValueError as err:
  169. print(err)
  170. continue
  171. player1tar = cL[FiG.get(fiG[randint(0,1)])]
  172. player1.betv(player1tar)
  173. break
  174.  
  175. # v Player
  176. elif types == 2:
  177. while True:
  178. try:
  179. playertar = input('\nWho would you like to bet on? ')
  180. playerinp = float(input('\nYou have $%.2f. Enter amount to bet: $'%(player.pocket)))
  181. player.betv(playertar,playerinp)
  182. break
  183. except ValueError as err:
  184. print(err)
  185. continue
  186. while True:
  187. try:
  188. player1tar = input('\nWho would you like to bet on? ')
  189. player1inp = float(input('\nYou have $%.2f. Enter amount to bet: $'%(player1.pocket)))
  190. player1.betv(player1tar,player1inp)
  191. break
  192. except ValueError as err:
  193. print(err)
  194. continue
  195.  
  196. # Beginning of Fight Loop
  197. # Decide Initiative
  198. if fight1.spd > fight2.spd:
  199. init = 'fight1'
  200. elif fight1.spd < fight2.spd:
  201. init = 'fight2'
  202. else:
  203. # Tiebreaker
  204. if randint(0,10) < 5:
  205. init = 'fight1'
  206. else:
  207. init = 'fight2'
  208. #print('\n'+cd.get(init).name,'goes first.')
  209.  
  210. # Attacking
  211. while fight1.hp > 0 and fight2.hp > 0:
  212. if init == 'fight1':
  213. fight1.attack()
  214. continue
  215. elif init == 'fight2':
  216. fight2.attack()
  217.  
  218. # Determine Winner and Allot Winning
  219. for i in ent:
  220. for x in pla:
  221. if i != pc[x].tar:
  222. if dc.get(pc[x].tar).hp > dc[i].hp:
  223. pc[x].end(True)
  224. else:
  225. pc[x].end(False)
  226. if fight1.hp > fight2.hp:
  227. print('\n'+fight1.name,'won!')
  228. elif fight1.hp < fight2.hp:
  229. print('\n'+fight2.name,'won!')
  230. print('\nPlayer 1 has $%.2f and Player 2 has $%.2f.\n'%(player.pocket,player1.pocket))
  231. print('--------------------------------------------')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement