Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.39 KB | None | 0 0
  1. /*
  2. * __________________________________________________________________________________________________________________
  3. * | | |
  4. * | ________ ___ ________ ________ ___ __ ___ ___ ___ ___ ________ ________ ___ __ |
  5. * | |\ __ \|\ \ |\ __ \|\ ____\|\ \|\ \ |\ \|\ \|\ \ |\ \|\ __ \|\ ____\|\ \|\ \ |
  6. * | \ \ \|\ /\ \ \ \ \ \|\ \ \ \___|\ \ \/ /|\ \ \\\ \ \ \ \ \ \ \ \|\ \ \ \___|\ \ \/ /|_ |
  7. * | \ \ __ \ \ \ \ \ __ \ \ \ \ \ ___ \ \ __ \ \ \ __ \ \ \ \ __ \ \ \ \ \ ___ \ |
  8. * | \ \ \|\ \ \ \____\ \ \ \ \ \ \____\ \ \\ \ \ \ \ \ \ \ \|\ \\_\ \ \ \ \ \ \ \____\ \ \\ \ \ |
  9. * | \ \_______\ \_______\ \__\ \__\ \_______\ \__\\ \__\ \__\ \__\ \__\ \________\ \__\ \__\ \_______\ \__\\ \__\ |
  10. * | \|_______|\|_______|\|__|\|__|\|_______|\|__| \|__|\|__|\|__|\|__|\|________|\|__|\|__|\|_______|\|__| \|__| |
  11. * | |
  12. * |__________________________________________________________________________________________________________________|
  13. *
  14. *
  15. *
  16. * _ _____________ _ _____ _ _ _ _
  17. * | | | | ___ \ ___ (_) ___ | ___| | | | (_) | |
  18. * | | | | |_/ / |_/ /_ ___ _ __ _ __ ___ ( _ ) | |__ | |_| |__ _ ___ _ __ ___ | | ___ __ _ _ _
  19. * | |/\| | ___ \ __/| |/ _ \ '__| '__/ _ \ / _ \/\ | __|| __| '_ \| |/ __| '_ \ / _ \| |/ _ \ / _` | | | |
  20. * \ /\ / |_/ / | | | __/ | | | | __/ | (_> < | |___| |_| | | | | (__| | | | (_) | | (_) | (_| | |_| |
  21. * \/ \/\____/\_| |_|\___|_| |_| \___| \___/\/ \____/ \__|_| |_|_|\___|_| |_|\___/|_|\___/ \__, |\__, |
  22. * __/ | __/ |
  23. * |___/ |___/
  24. *
  25. */
  26. pragma solidity ^0.5.3;
  27.  
  28. contract blackHijack{
  29. address hijack = address(this);
  30. mapping(address => uint) public players;
  31. mapping(address => uint) public cards;
  32. mapping(address => bool) public twerk;
  33. uint8 players_number = 0;
  34. bool start_game;
  35. bool dealer_draw;
  36. uint dealer;
  37.  
  38. /****************************************************************************
  39. * @dev fundTheContract is needed to put around 60 Ether in the contract. *
  40. * If the contract has no Ether, nobody can play. *
  41. ****************************************************************************
  42. *
  43. * _________
  44. * / ======= \
  45. * / __________\
  46. * | ___________ |
  47. * | | - | |
  48. * | | | |
  49. * | |_________| |
  50. * \=____________/
  51. * / """"""""""" \
  52. * / ::::::::::::: \
  53. * (_________________)
  54. *
  55. *
  56. */
  57. function fundTheContract() public payable{
  58. }
  59.  
  60. /*************************************************************************************
  61. * @dev getContractStatement to know the variable statement of the contract *
  62. * ->player Here we define the struct returned : *
  63. * 0 => Number of player registered. *
  64. * 1 => Is here any game started by a registered player ? *
  65. * 2 => Does someone faceTheDealer ? *
  66. * 3 => The dealer hand, what he got with what he draw. *
  67. * 4 => Current registered player address who call this function. *
  68. * 5 => His hand. *
  69. * 6 => Does he used the doubleTwerk function ? *
  70. * 7 => His bet. *
  71. * 8 => what the smartContract hodL. *
  72. * *
  73. *************************************************************************************
  74. */
  75. function getContractStatement() public view returns(uint8, bool, bool, uint, address, uint, bool, uint, uint256){
  76. require(players[msg.sender] != 0);
  77. return(players_number, start_game, dealer_draw, dealer, msg.sender, cards[msg.sender], twerk[msg.sender], players[msg.sender], hijack.balance);
  78. }
  79.  
  80. /*************************************************************************************
  81. * @dev payToPlay to register a player with his bet, you can't play below 1 Ether. *
  82. * @dev Casino need to put 60 Ether in the contract if you want to sit at the table. *
  83. * ->player Bet more than 1 Ether (max 5), we love your coins. *
  84. *************************************************************************************
  85. *
  86. * ***********
  87. * ***** ***********
  88. * ** ****** *** ********
  89. * **** ****** ** *******
  90. * *** ******* ** ******
  91. * *** ** * **
  92. * *|/------ -------\ ** *
  93. * | |=| :===**
  94. * | O | | O | }|*
  95. * |---- | ---- | |*
  96. * | |___ |\/
  97. * | |
  98. * \ ----- |
  99. * \ |
  100. * -__ -- -/
  101. *
  102. */
  103. function payToPlay() public payable{
  104. require(hijack.balance >= 60 ether);
  105. require(!start_game);
  106. require(players_number <= 6);
  107. require(msg.value >= 1 ether);
  108. require(msg.value <= 5 ether);
  109. players[msg.sender] = msg.value;
  110. cards[msg.sender] = 0;
  111. players_number++;
  112. }
  113.  
  114. /****************************************
  115. * @dev drawACard to pick a card. *
  116. * ->player Try your luck. *
  117. ****************************************
  118. *
  119. * .------.
  120. * .------. |A . |
  121. * |A_ _ | .------; / \ |
  122. * |( \/ )|-----. _ |(_,_) |
  123. * | \ / | /\ |( ) | I A|
  124. * | \/ A|/ \ |_x_) |------'
  125. * `-----+'\ / | Y A|
  126. * | \/ A|-----'
  127. * `------'
  128. *
  129. *
  130. */
  131. function drawACard() public returns(uint){
  132. require(players[msg.sender] != 0);
  133. require(!twerk[msg.sender]);
  134. start_game = true;
  135. cards[msg.sender] += random();
  136. return cards[msg.sender];
  137. }
  138.  
  139. /***************************************************************************
  140. * @dev doubleTwerk double your bet and draw only one more card. *
  141. * ->player if you use doubleTwerk you can only faceTheDealer after. *
  142. ***************************************************************************
  143. * _.._
  144. * .' '.
  145. * (____/`\ \
  146. * ( |' ' ) )
  147. * ) _\= _/ (
  148. * __..---.(`_.' ` \ )
  149. * `;-""-._(_( . `; (
  150. * / `-`'--' ; )
  151. * / / . ( . ,| |(
  152. * _.-`'---...__,' /-,..___.-'--'_| |_)
  153. * '-'``'-.._ ,' | / .........'
  154. * ``;--"`; | `-`
  155. * `'..__.'
  156. *
  157. */
  158. function doubleTwerk() public payable{
  159. require(cards[msg.sender] != 0);
  160. require(start_game);
  161. require(msg.value == players[msg.sender]);
  162. require(!twerk[msg.sender]);
  163. players[msg.sender] += msg.value;
  164. drawACard();
  165. twerk[msg.sender] = true;
  166. }
  167.  
  168.  
  169. /************************************************************************************
  170. * @dev faceTheDealer makes the dealer draw cards depending on blackHijack rules. *
  171. * ->player If you face the dealer you can't draw any card. *
  172. ************************************************************************************
  173. *
  174. *
  175. * _..-''--'----_.
  176. * ,''.-''| .---/ _`-._
  177. * ,' \ \ ;| | ,/ / `-._`-.
  178. * ,' ,',\ \( | |// /,-._ / /
  179. * ;.`. `,\ \`| |/ / | )/ /
  180. * / /`_`.\_\ \| /_.-.'-''/ /
  181. * / /_|_:.`. \ |;'`..') / /
  182. * `-._`-._`.`.;`.\ ,' / /
  183. * `-._`.`/ ,'-._/ /
  184. * : `-/ \`-.._/
  185. * | : ;._ (
  186. * : | \ ` \
  187. * \ \ |
  188. * : : ;
  189. * | /
  190. * ; ,'
  191. * / /
  192. * / /
  193. * /
  194. */
  195. function faceTheDealer() public returns(uint){
  196. require(start_game);
  197. require(cards[msg.sender] != 0);
  198. if(!dealer_draw){
  199. dealer = 0;
  200. }
  201. dealer_draw = true;
  202.  
  203. while(dealer < 17){
  204. dealer += random();
  205. }
  206. return dealer;
  207. }
  208.  
  209. /************************************************************
  210. * @dev random generate a random number between 1 and 10. *
  211. * ->player Trust us. *
  212. ************************************************************
  213. * ____ ____ ____ ___ ___ ___ ___
  214. * | \ / || \ | \ / \ | | |
  215. * | D )| o || _ || \ | || _ _ |
  216. * | / | || | || D || O || \_/ |
  217. * | \ | _ || | || || || | |
  218. * | . \| | || | || || || | |
  219. * |__|\_||__|__||__|__||_____| \___/ |___|___|
  220. *
  221. */
  222. function random() private view returns(uint) {
  223. return uint(blockhash(block.number-1))%10 + 1;
  224. }
  225.  
  226.  
  227. /************************************************************
  228. * @dev rewardTheNoob reward all the winners. *
  229. * ->player Contract always win. *
  230. ************************************************************
  231. *
  232. * █
  233. * ███
  234. * ▄██████
  235. * █████████
  236. * ███████████▄
  237. * ▄██████████████
  238. * █████████████████
  239. * ███████████████████▄
  240. * ██████████████████████
  241. * █████████████████████████
  242. * ███████████████████████████▄
  243. * ██████████████████████████████
  244. * █████████████████████████████████
  245. * ███████████████████████████████████
  246. * █████████████████████████████████████
  247. * ███████████████████████████████▀
  248. * ▀████████████████████████
  249. * █████████████████
  250. * ███▄ █████████▀ ▄██▀
  251. * ████▄ ▀██ ▄█████
  252. * ███████ ▄▄██████
  253. * █████████▄ ▄█████████
  254. * ▀███████████████████
  255. * █████████████████
  256. * ▐█████████████
  257. * ██████████▀
  258. * ███████
  259. * ████▀
  260. * █
  261. *
  262. *
  263. *
  264. */
  265. function rewardTheNoob() public returns(uint8){
  266. require(start_game);
  267. require(dealer_draw);
  268. require(cards[msg.sender] != 0);
  269. if(players_number == 1){
  270. dealer_draw = false;
  271. start_game = false;
  272. }
  273. if(cards[msg.sender] > 21){
  274. killPlayer(msg.sender);
  275. return 2;
  276. }
  277. if(dealer > 21){
  278. msg.sender.transfer(players[msg.sender] * 2);
  279. killPlayer(msg.sender);
  280. return 1;
  281. }
  282. if(cards[msg.sender] > dealer){
  283. msg.sender.transfer(players[msg.sender] * 2);
  284. killPlayer(msg.sender);
  285. return 1;
  286. }else if(cards[msg.sender] == dealer){
  287. msg.sender.transfer(players[msg.sender]);
  288. killPlayer(msg.sender);
  289. return 0;
  290. }else{
  291. killPlayer(msg.sender);
  292. return 2;
  293. }
  294. }
  295.  
  296. /****************************************************
  297. * @dev killPlayer delete a player from mappings. *
  298. * ->player Sorry for your loss. *
  299. ****************************************************
  300. *
  301. * _,.-------.,_
  302. * ,;~' '~;,
  303. * ,; ;,
  304. * ; ;
  305. * ,' ',
  306. * ,; ;,
  307. * ; ; . . ; ;
  308. * | ; ______ ______ ; |
  309. * | `/~" ~" . "~ "~\' |
  310. * | ~ ,-~~~^~, | ,~^~~~-, ~ |
  311. * | | }:{ | |
  312. * | l / | \ ! |
  313. * .~ (__,.--" .^. "--.,__) ~.
  314. * | ---;' / | \ `;--- |
  315. * \__. \/^\/ .__/
  316. * V| \ / |V
  317. * | |T~\___!___!___/~T| |
  318. * | |`IIII_I_I_I_IIII'| |
  319. * | \,III I I I III,/ |
  320. * \ `~~~~~~~~~~' /
  321. * \ . . /
  322. * \. ^ ./
  323. * ^~~~^~~~^
  324. *
  325. */
  326. function killPlayer(address _player) private{
  327. delete(cards[_player]);
  328. delete(players[_player]);
  329. delete(twerk[_player]);
  330. players_number--;
  331. }
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement