tx · 67HYTywb5xb6UbqiL2hAjR4pbjX8uMjcmhsXVJYqcuLj

3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5:  -0.05000000 Waves

2024.07.28 12:57 [3213781] smart account 3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5 > SELF 0.00000000 Waves

{ "type": 13, "id": "67HYTywb5xb6UbqiL2hAjR4pbjX8uMjcmhsXVJYqcuLj", "fee": 5000000, "feeAssetId": null, "timestamp": 1722160658171, "version": 2, "chainId": 84, "sender": "3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5", "senderPublicKey": "DhKSnv34wE65np8uDd8E6ygEbNsn6fHx9p7q4hJTcgRw", "proofs": [ "54m9cSFuCvTrTsVTrH3ckF9ZRcTTaBW3KL5KpdLNfALEQqt9Bv1FxdkwC656pzShtvLxtMuY3kCF3wYvkdtUubRX" ], "script": "base64:AAIFAAAAAAAAAA0IAhIDCgEIEgQKAggIAAAACQAAAAAMQkFJX0NPTlRSQUNUAgAAACMzTjl0S2l4enFUWVduRVhReHJEUTVwQlRHdlFkNnNGc3ZtVgAAAAAMQkFJX0FTU0VUX0lEAQAAACCT4XI4cQSbauiaYx8EJLdkU5csPrxmC4N0r2i7JI3iQgAAAAAGUExBWUVSAgAAAAExAAAAAAJBSQIAAAABMgAAAAAOV0lOTklOR19BTU9VTlQAAAAAAAX14QABAAAABmNoYXJBdAAAAAIAAAADc3RyAAAAAWkJAAGRAAAAAgkABLUAAAACBQAAAANzdHICAAAAAAUAAAABaQEAAAASY2hlY2tJZk1vdmVJc1ZhbGlkAAAAAgAAAAZnYW1lSWQAAAAFYm9hcmQEAAAADGN1cnJlbnRCb2FyZAQAAAAHJG1hdGNoMAkABCIAAAABCQABLAAAAAICAAAADWN1cnJlbnRCb2FyZF8FAAAABmdhbWVJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzAgAAAAkwMDAwMDAwMDAEAAAADWZpcnN0U2VsZWN0ZWQDCQEAAAACIT0AAAACCQEAAAAGY2hhckF0AAAAAgUAAAAFYm9hcmQAAAAAAAAAAAAJAQAAAAZjaGFyQXQAAAACBQAAAAxjdXJyZW50Qm9hcmQAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAEAAAADnNlY29uZFNlbGVjdGVkAwkBAAAAAiE9AAAAAgkBAAAABmNoYXJBdAAAAAIFAAAABWJvYXJkAAAAAAAAAAABCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAABAAAAA10aGlyZFNlbGVjdGVkAwkBAAAAAiE9AAAAAgkBAAAABmNoYXJBdAAAAAIFAAAABWJvYXJkAAAAAAAAAAACCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAACAAAAAAAAAAABAAAAAAAAAAAABAAAAA5mb3VydGhTZWxlY3RlZAMJAQAAAAIhPQAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAAAwkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAAAwAAAAAAAAAAAQAAAAAAAAAAAAQAAAANZmlmdGhTZWxlY3RlZAMJAQAAAAIhPQAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAABAkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABAAAAAAAAAAAAQAAAAAAAAAAAAQAAAANc2l4dGhTZWxlY3RlZAMJAQAAAAIhPQAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAABQkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAQAAAAPc2V2ZW50aFNlbGVjdGVkAwkBAAAAAiE9AAAAAgkBAAAABmNoYXJBdAAAAAIFAAAABWJvYXJkAAAAAAAAAAAGCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAAGAAAAAAAAAAABAAAAAAAAAAAABAAAAA5laWdodGhTZWxlY3RlZAMJAQAAAAIhPQAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAABwkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABwAAAAAAAAAAAQAAAAAAAAAAAAQAAAANbmludGhTZWxlY3RlZAMJAQAAAAIhPQAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAACAkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAACAAAAAAAAAAAAQAAAAAAAAAAAAQAAAAUZmlyc3RQb3NpdGlvbkNvcnJlY3QDAwkAAAAAAAACCQEAAAAGY2hhckF0AAAAAgUAAAAFYm9hcmQAAAAAAAAAAAAJAQAAAAZjaGFyQXQAAAACBQAAAAxjdXJyZW50Qm9hcmQAAAAAAAAAAAAGCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAxjdXJyZW50Qm9hcmQAAAAAAAAAAAACAAAAATAGBwQAAAAVc2Vjb25kUG9zaXRpb25Db3JyZWN0AwMJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAABWJvYXJkAAAAAAAAAAABCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAABBgkAAAAAAAACCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAABAgAAAAEwBgcEAAAAFHRoaXJkUG9zaXRpb25Db3JyZWN0AwMJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAABWJvYXJkAAAAAAAAAAACCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAACBgkAAAAAAAACCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAACAgAAAAEwBgcEAAAAFWZvdXJ0aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAAAwkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAAAwYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAAAwIAAAABMAYHBAAAABRmaWZ0aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAABAkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABAYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABAIAAAABMAYHBAAAABRzaXh0aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAABQkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABQYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABQIAAAABMAYHBAAAABZzZXZlbnRoUG9zaXRpb25Db3JyZWN0AwMJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAABWJvYXJkAAAAAAAAAAAGCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAAGBgkAAAAAAAACCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAAGAgAAAAEwBgcEAAAAFWVpZ2h0aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAABwkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABwYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABwIAAAABMAYHBAAAABRuaW50aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAACAkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAACAYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAACAIAAAABMAYHBAAAABhub09sZFBvc2l0aW9uT3ZlcndyaXR0ZW4DAwMDAwMDAwUAAAAUZmlyc3RQb3NpdGlvbkNvcnJlY3QFAAAAFXNlY29uZFBvc2l0aW9uQ29ycmVjdAcFAAAAFHRoaXJkUG9zaXRpb25Db3JyZWN0BwUAAAAVZm91cnRoUG9zaXRpb25Db3JyZWN0BwUAAAAUZmlmdGhQb3NpdGlvbkNvcnJlY3QHBQAAABRzaXh0aFBvc2l0aW9uQ29ycmVjdAcFAAAAFnNldmVudGhQb3NpdGlvbkNvcnJlY3QHBQAAABVlaWdodGhQb3NpdGlvbkNvcnJlY3QHBQAAABRuaW50aFBvc2l0aW9uQ29ycmVjdAcEAAAACmNvdW50TW92ZXMJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACBQAAAA1maXJzdFNlbGVjdGVkBQAAAA5zZWNvbmRTZWxlY3RlZAUAAAANdGhpcmRTZWxlY3RlZAUAAAAOZm91cnRoU2VsZWN0ZWQFAAAADWZpZnRoU2VsZWN0ZWQFAAAADXNpeHRoU2VsZWN0ZWQFAAAA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", "height": 3213781, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GcQaDNHmT1syezTKm3oevMiBGiNkXnrPsF41So8rqWyd Next: BcUeLAMoa43odQ5xV8nNd7JpLfSjopbhQR4tkBJsTEKZ Diff:
OldNewDifferences
123123
124124
125125 func checkIfPlayerHasWon (gameId,board,player) = {
126- let currentBoard = if ((player == AI))
127- then board
128- else match getString(("currentBoard_" + gameId)) {
129- case s: String =>
130- s
131- case _ =>
132- "000000000"
133- }
126+ let currentBoard = match getString(("currentBoard_" + gameId)) {
127+ case s: String =>
128+ s
129+ case _ =>
130+ "000000000"
131+ }
134132 let winningCombinations = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6]]
135- let topRow = if (if ((charAt(currentBoard, winningCombinations[0][0]) == player))
136- then (charAt(currentBoard, winningCombinations[0][1]) == player)
133+ let topRow = if (if ((charAt(board, winningCombinations[0][0]) == player))
134+ then (charAt(board, winningCombinations[0][1]) == player)
137135 else false)
138- then (charAt(currentBoard, winningCombinations[0][2]) == player)
136+ then (charAt(board, winningCombinations[0][2]) == player)
139137 else false
140- let middleRow = if (if ((charAt(currentBoard, winningCombinations[1][0]) == player))
141- then (charAt(currentBoard, winningCombinations[1][1]) == player)
138+ let middleRow = if (if ((charAt(board, winningCombinations[1][0]) == player))
139+ then (charAt(board, winningCombinations[1][1]) == player)
142140 else false)
143- then (charAt(currentBoard, winningCombinations[1][2]) == player)
141+ then (charAt(board, winningCombinations[1][2]) == player)
144142 else false
145- let bottomRow = if (if ((charAt(currentBoard, winningCombinations[2][0]) == player))
146- then (charAt(currentBoard, winningCombinations[2][1]) == player)
143+ let bottomRow = if (if ((charAt(board, winningCombinations[2][0]) == player))
144+ then (charAt(board, winningCombinations[2][1]) == player)
147145 else false)
148- then (charAt(currentBoard, winningCombinations[2][2]) == player)
146+ then (charAt(board, winningCombinations[2][2]) == player)
149147 else false
150- let leftColumn = if (if ((charAt(currentBoard, winningCombinations[3][0]) == player))
151- then (charAt(currentBoard, winningCombinations[3][1]) == player)
148+ let leftColumn = if (if ((charAt(board, winningCombinations[3][0]) == player))
149+ then (charAt(board, winningCombinations[3][1]) == player)
152150 else false)
153- then (charAt(currentBoard, winningCombinations[3][2]) == player)
151+ then (charAt(board, winningCombinations[3][2]) == player)
154152 else false
155- let middleColumn = if (if ((charAt(currentBoard, winningCombinations[4][0]) == player))
156- then (charAt(currentBoard, winningCombinations[4][1]) == player)
153+ let middleColumn = if (if ((charAt(board, winningCombinations[4][0]) == player))
154+ then (charAt(board, winningCombinations[4][1]) == player)
157155 else false)
158- then (charAt(currentBoard, winningCombinations[4][2]) == player)
156+ then (charAt(board, winningCombinations[4][2]) == player)
159157 else false
160- let rightColumn = if (if ((charAt(currentBoard, winningCombinations[5][0]) == player))
161- then (charAt(currentBoard, winningCombinations[5][1]) == player)
158+ let rightColumn = if (if ((charAt(board, winningCombinations[5][0]) == player))
159+ then (charAt(board, winningCombinations[5][1]) == player)
162160 else false)
163- then (charAt(currentBoard, winningCombinations[5][2]) == player)
161+ then (charAt(board, winningCombinations[5][2]) == player)
164162 else false
165- let diagonalOne = if (if ((charAt(currentBoard, winningCombinations[6][0]) == player))
166- then (charAt(currentBoard, winningCombinations[6][1]) == player)
163+ let diagonalOne = if (if ((charAt(board, winningCombinations[6][0]) == player))
164+ then (charAt(board, winningCombinations[6][1]) == player)
167165 else false)
168- then (charAt(currentBoard, winningCombinations[6][2]) == player)
166+ then (charAt(board, winningCombinations[6][2]) == player)
169167 else false
170- let diagonalTwo = if (if ((charAt(currentBoard, winningCombinations[7][0]) == player))
171- then (charAt(currentBoard, winningCombinations[7][1]) == player)
168+ let diagonalTwo = if (if ((charAt(board, winningCombinations[7][0]) == player))
169+ then (charAt(board, winningCombinations[7][1]) == player)
172170 else false)
173- then (charAt(currentBoard, winningCombinations[7][2]) == player)
171+ then (charAt(board, winningCombinations[7][2]) == player)
174172 else false
175173 if (if (if (if (if (if (if (topRow)
176174 then true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let BAI_CONTRACT = "3N9tKixzqTYWnEXQxrDQ5pBTGvQd6sFsvmV"
55
66 let BAI_ASSET_ID = base58'AxGKQRxKo4F2EbhrRq6N2tdLsxtMnpzQsS4QemV6V1W1'
77
88 let PLAYER = "1"
99
1010 let AI = "2"
1111
1212 let WINNING_AMOUNT = 100000000
1313
1414 func charAt (str,i) = split(str, "")[i]
1515
1616
1717 func checkIfMoveIsValid (gameId,board) = {
1818 let currentBoard = match getString(("currentBoard_" + gameId)) {
1919 case s: String =>
2020 s
2121 case _ =>
2222 "000000000"
2323 }
2424 let firstSelected = if ((charAt(board, 0) != charAt(currentBoard, 0)))
2525 then 1
2626 else 0
2727 let secondSelected = if ((charAt(board, 1) != charAt(currentBoard, 1)))
2828 then 1
2929 else 0
3030 let thirdSelected = if ((charAt(board, 2) != charAt(currentBoard, 2)))
3131 then 1
3232 else 0
3333 let fourthSelected = if ((charAt(board, 3) != charAt(currentBoard, 3)))
3434 then 1
3535 else 0
3636 let fifthSelected = if ((charAt(board, 4) != charAt(currentBoard, 4)))
3737 then 1
3838 else 0
3939 let sixthSelected = if ((charAt(board, 5) != charAt(currentBoard, 5)))
4040 then 1
4141 else 0
4242 let seventhSelected = if ((charAt(board, 6) != charAt(currentBoard, 6)))
4343 then 1
4444 else 0
4545 let eighthSelected = if ((charAt(board, 7) != charAt(currentBoard, 7)))
4646 then 1
4747 else 0
4848 let ninthSelected = if ((charAt(board, 8) != charAt(currentBoard, 8)))
4949 then 1
5050 else 0
5151 let firstPositionCorrect = if (if ((charAt(board, 0) == charAt(currentBoard, 0)))
5252 then true
5353 else (charAt(currentBoard, 0) == "0"))
5454 then true
5555 else false
5656 let secondPositionCorrect = if (if ((charAt(board, 1) == charAt(currentBoard, 1)))
5757 then true
5858 else (charAt(currentBoard, 1) == "0"))
5959 then true
6060 else false
6161 let thirdPositionCorrect = if (if ((charAt(board, 2) == charAt(currentBoard, 2)))
6262 then true
6363 else (charAt(currentBoard, 2) == "0"))
6464 then true
6565 else false
6666 let fourthPositionCorrect = if (if ((charAt(board, 3) == charAt(currentBoard, 3)))
6767 then true
6868 else (charAt(currentBoard, 3) == "0"))
6969 then true
7070 else false
7171 let fifthPositionCorrect = if (if ((charAt(board, 4) == charAt(currentBoard, 4)))
7272 then true
7373 else (charAt(currentBoard, 4) == "0"))
7474 then true
7575 else false
7676 let sixthPositionCorrect = if (if ((charAt(board, 5) == charAt(currentBoard, 5)))
7777 then true
7878 else (charAt(currentBoard, 5) == "0"))
7979 then true
8080 else false
8181 let seventhPositionCorrect = if (if ((charAt(board, 6) == charAt(currentBoard, 6)))
8282 then true
8383 else (charAt(currentBoard, 6) == "0"))
8484 then true
8585 else false
8686 let eighthPositionCorrect = if (if ((charAt(board, 7) == charAt(currentBoard, 7)))
8787 then true
8888 else (charAt(currentBoard, 7) == "0"))
8989 then true
9090 else false
9191 let ninthPositionCorrect = if (if ((charAt(board, 8) == charAt(currentBoard, 8)))
9292 then true
9393 else (charAt(currentBoard, 8) == "0"))
9494 then true
9595 else false
9696 let noOldPositionOverwritten = if (if (if (if (if (if (if (if (firstPositionCorrect)
9797 then secondPositionCorrect
9898 else false)
9999 then thirdPositionCorrect
100100 else false)
101101 then fourthPositionCorrect
102102 else false)
103103 then fifthPositionCorrect
104104 else false)
105105 then sixthPositionCorrect
106106 else false)
107107 then seventhPositionCorrect
108108 else false)
109109 then eighthPositionCorrect
110110 else false)
111111 then ninthPositionCorrect
112112 else false
113113 let countMoves = ((((((((firstSelected + secondSelected) + thirdSelected) + fourthSelected) + fifthSelected) + sixthSelected) + seventhSelected) + eighthSelected) + ninthSelected)
114114 let onlyOneMove = (1 >= countMoves)
115115 if ((countMoves > 1))
116116 then throw("More than move made!")
117117 else if (!(noOldPositionOverwritten))
118118 then throw("Former position overwritten!")
119119 else if (noOldPositionOverwritten)
120120 then onlyOneMove
121121 else false
122122 }
123123
124124
125125 func checkIfPlayerHasWon (gameId,board,player) = {
126- let currentBoard = if ((player == AI))
127- then board
128- else match getString(("currentBoard_" + gameId)) {
129- case s: String =>
130- s
131- case _ =>
132- "000000000"
133- }
126+ let currentBoard = match getString(("currentBoard_" + gameId)) {
127+ case s: String =>
128+ s
129+ case _ =>
130+ "000000000"
131+ }
134132 let winningCombinations = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6]]
135- let topRow = if (if ((charAt(currentBoard, winningCombinations[0][0]) == player))
136- then (charAt(currentBoard, winningCombinations[0][1]) == player)
133+ let topRow = if (if ((charAt(board, winningCombinations[0][0]) == player))
134+ then (charAt(board, winningCombinations[0][1]) == player)
137135 else false)
138- then (charAt(currentBoard, winningCombinations[0][2]) == player)
136+ then (charAt(board, winningCombinations[0][2]) == player)
139137 else false
140- let middleRow = if (if ((charAt(currentBoard, winningCombinations[1][0]) == player))
141- then (charAt(currentBoard, winningCombinations[1][1]) == player)
138+ let middleRow = if (if ((charAt(board, winningCombinations[1][0]) == player))
139+ then (charAt(board, winningCombinations[1][1]) == player)
142140 else false)
143- then (charAt(currentBoard, winningCombinations[1][2]) == player)
141+ then (charAt(board, winningCombinations[1][2]) == player)
144142 else false
145- let bottomRow = if (if ((charAt(currentBoard, winningCombinations[2][0]) == player))
146- then (charAt(currentBoard, winningCombinations[2][1]) == player)
143+ let bottomRow = if (if ((charAt(board, winningCombinations[2][0]) == player))
144+ then (charAt(board, winningCombinations[2][1]) == player)
147145 else false)
148- then (charAt(currentBoard, winningCombinations[2][2]) == player)
146+ then (charAt(board, winningCombinations[2][2]) == player)
149147 else false
150- let leftColumn = if (if ((charAt(currentBoard, winningCombinations[3][0]) == player))
151- then (charAt(currentBoard, winningCombinations[3][1]) == player)
148+ let leftColumn = if (if ((charAt(board, winningCombinations[3][0]) == player))
149+ then (charAt(board, winningCombinations[3][1]) == player)
152150 else false)
153- then (charAt(currentBoard, winningCombinations[3][2]) == player)
151+ then (charAt(board, winningCombinations[3][2]) == player)
154152 else false
155- let middleColumn = if (if ((charAt(currentBoard, winningCombinations[4][0]) == player))
156- then (charAt(currentBoard, winningCombinations[4][1]) == player)
153+ let middleColumn = if (if ((charAt(board, winningCombinations[4][0]) == player))
154+ then (charAt(board, winningCombinations[4][1]) == player)
157155 else false)
158- then (charAt(currentBoard, winningCombinations[4][2]) == player)
156+ then (charAt(board, winningCombinations[4][2]) == player)
159157 else false
160- let rightColumn = if (if ((charAt(currentBoard, winningCombinations[5][0]) == player))
161- then (charAt(currentBoard, winningCombinations[5][1]) == player)
158+ let rightColumn = if (if ((charAt(board, winningCombinations[5][0]) == player))
159+ then (charAt(board, winningCombinations[5][1]) == player)
162160 else false)
163- then (charAt(currentBoard, winningCombinations[5][2]) == player)
161+ then (charAt(board, winningCombinations[5][2]) == player)
164162 else false
165- let diagonalOne = if (if ((charAt(currentBoard, winningCombinations[6][0]) == player))
166- then (charAt(currentBoard, winningCombinations[6][1]) == player)
163+ let diagonalOne = if (if ((charAt(board, winningCombinations[6][0]) == player))
164+ then (charAt(board, winningCombinations[6][1]) == player)
167165 else false)
168- then (charAt(currentBoard, winningCombinations[6][2]) == player)
166+ then (charAt(board, winningCombinations[6][2]) == player)
169167 else false
170- let diagonalTwo = if (if ((charAt(currentBoard, winningCombinations[7][0]) == player))
171- then (charAt(currentBoard, winningCombinations[7][1]) == player)
168+ let diagonalTwo = if (if ((charAt(board, winningCombinations[7][0]) == player))
169+ then (charAt(board, winningCombinations[7][1]) == player)
172170 else false)
173- then (charAt(currentBoard, winningCombinations[7][2]) == player)
171+ then (charAt(board, winningCombinations[7][2]) == player)
174172 else false
175173 if (if (if (if (if (if (if (topRow)
176174 then true
177175 else middleRow)
178176 then true
179177 else bottomRow)
180178 then true
181179 else leftColumn)
182180 then true
183181 else middleRow)
184182 then true
185183 else rightColumn)
186184 then true
187185 else diagonalOne)
188186 then true
189187 else diagonalTwo
190188 }
191189
192190
193191 func getPossibleMovesCount (board) = {
194192 let firstMovePossible = if ((charAt(board, 0) == "0"))
195193 then 1
196194 else 0
197195 let secondMovePossible = if ((charAt(board, 1) == "0"))
198196 then 1
199197 else 0
200198 let thirdMovePossible = if ((charAt(board, 2) == "0"))
201199 then 1
202200 else 0
203201 let fourthMovePossible = if ((charAt(board, 3) == "0"))
204202 then 1
205203 else 0
206204 let fifthMovePossible = if ((charAt(board, 4) == "0"))
207205 then 1
208206 else 0
209207 let sixthMovePossible = if ((charAt(board, 5) == "0"))
210208 then 1
211209 else 0
212210 let seventhMovePossible = if ((charAt(board, 6) == "0"))
213211 then 1
214212 else 0
215213 let eigthMovePossible = if ((charAt(board, 7) == "0"))
216214 then 1
217215 else 0
218216 let ninthMovePossible = if ((charAt(board, 8) == "0"))
219217 then 1
220218 else 0
221219 ((((((((firstMovePossible + secondMovePossible) + thirdMovePossible) + fourthMovePossible) + fifthMovePossible) + sixthMovePossible) + seventhMovePossible) + eigthMovePossible) + ninthMovePossible)
222220 }
223221
224222
225223 @Callable(i)
226224 func callback (gameIdAndBoard) = {
227225 let parts = split(gameIdAndBoard, "_")
228226 let gameId = parts[0]
229227 let board = parts[1]
230228 let nextPlayer = match getString(("next_player_" + gameId)) {
231229 case s: String =>
232230 s
233231 case _ =>
234232 ""
235233 }
236234 let moveOfAIIsValid = checkIfMoveIsValid(gameId, board)
237235 if (!(moveOfAIIsValid))
238236 then throw("Illegal move!")
239237 else if ((nextPlayer != AI))
240238 then throw("Player has to move first!")
241239 else {
242240 let aiHasWon = checkIfPlayerHasWon(gameId, board, AI)
243241 if (aiHasWon)
244242 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "ai")]
245243 else [StringEntry(("currentBoard_" + gameId), board), StringEntry(("next_player_" + gameId), PLAYER)]
246244 }
247245 }
248246
249247
250248
251249 @Callable(i)
252250 func playTTT (game,board) = {
253251 let numberOfPayments = size(i.payments)
254252 if ((numberOfPayments != 1))
255253 then throw("Payment necessary!")
256254 else {
257255 let payment = i.payments[0]
258256 let fee = payment.amount
259257 let feeAssetId = payment.assetId
260258 let minFee = match getInteger(Address(fromBase58String(BAI_CONTRACT)), "price_tictactoe") {
261259 case n: Int =>
262260 n
263261 case _ =>
264262 0
265263 }
266264 if (if ((feeAssetId != BAI_ASSET_ID))
267265 then true
268266 else (minFee > fee))
269267 then throw("Payment of the minimal BAI amount necessary!")
270268 else {
271269 let sender = i.caller
272270 let gameId = if ((size(game) == 0))
273271 then toBase58String(i.transactionId)
274272 else game
275273 let nextPlayer = match getString(("next_player_" + gameId)) {
276274 case s: String =>
277275 s
278276 case _ =>
279277 PLAYER
280278 }
281279 if ((nextPlayer != PLAYER))
282280 then throw("AI hast to move first!")
283281 else {
284282 let currentBoard = match getString(("currentBoard_" + gameId)) {
285283 case s: String =>
286284 s
287285 case _ =>
288286 board
289287 }
290288 let initiator = match getString(("initiator_" + gameId)) {
291289 case s: String =>
292290 s
293291 case _ =>
294292 toString(sender)
295293 }
296294 if ((toString(sender) != initiator))
297295 then throw("Only initiator is allowed to make moves!")
298296 else {
299297 let moveOfPlayerIsValid = checkIfMoveIsValid(gameId, board)
300298 if (!(moveOfPlayerIsValid))
301299 then throw("Illegal move!")
302300 else {
303301 let playerHasWon = checkIfPlayerHasWon(gameId, board, PLAYER)
304302 let numberOfPossibleMoves = getPossibleMovesCount(board)
305303 if (playerHasWon)
306304 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "player"), ScriptTransfer(sender, WINNING_AMOUNT, BAI_ASSET_ID)]
307305 else if ((numberOfPossibleMoves == 0))
308306 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "draw")]
309307 else {
310308 let nextMove = invoke(Address(fromBase58String(BAI_CONTRACT)), "registerTaskCallback", [((gameId + "_") + board), "tictactoe", "callback"], [AttachedPayment(BAI_ASSET_ID, 10000000)])
311309 if ((nextMove == nextMove))
312310 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("initiator_" + gameId), toString(sender)), StringEntry(("next_player_" + gameId), AI)]
313311 else throw("Strict value is not equal to itself.")
314312 }
315313 }
316314 }
317315 }
318316 }
319317 }
320318 }
321319
322320
323321 @Verifier(tx)
324322 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
325323

github/deemru/w8io/026f985 
45.67 ms