Created
June 10, 2017 18:51
-
-
Save ssophwang/1e558d49ea812efe5b99f776bc186dc8 to your computer and use it in GitHub Desktop.
Rabbit_Robber.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ui | |
import speech | |
import random | |
from PIL import Image | |
import numpy | |
rabbit_size = 50 | |
v = ui.View(background_color=('#bcdeff')) | |
board = ui.View() | |
v.add_subview(board) | |
v.present('full_screen', hide_title_bar=False , orientations=['landscape']) | |
board.frame = (v.width-v.height, rabbit_size/2, v.height-rabbit_size, v.height-rabbit_size) | |
board.border_width = 3 | |
board.border_color = ('black') | |
board.background_color = ('#ffffff') | |
rows = 8 | |
cols = 8 | |
blocks = [] | |
money_balence = 0 | |
bank_money = 10000 | |
fox = 20000 | |
score_label = ui.Label() | |
score_label.text = 'Money: '+ str(money_balence) | |
score_label.width = 30000 | |
score_label.height = 200 | |
score_label.x = 50 | |
score_label.y = 100 | |
score_label.font = ('American Typewriter', 30) | |
v.add_subview(score_label) | |
manhattan_grid = numpy.chararray((rows, cols)) | |
manhattan_grid[:] = '0' | |
for r in range(rows): | |
for c in range(cols): | |
random_num = random.randint(1, 100) | |
block = ui.ImageView() | |
if random_num < 12: | |
block = ui.ImageView() | |
block.image = ui.Image('emj:Wolf_Face') | |
manhattan_grid[r,c] = 'W' | |
elif random_num < 30 and random_num > 11: | |
block = ui.ImageView() | |
block.image = ui.Image('emj:Bank') | |
manhattan_grid[r,c] = 'B' | |
else: | |
block.background_color = ('#838383') | |
block.width = board.height/cols | |
block.height = board.height/rows | |
block.border_color = ('black') | |
block.border_width = 1 | |
block.x = block.width*c | |
block.y = block.height*r | |
block.font = ('American Typewriter',60) | |
board.add_subview(block) | |
blocks.append({'block' : block, 'original_color' : block.background_color, 'queens_eating' : 0, 'row_number' : r, 'column_number' : c}) | |
def get_block_entity(r, c): | |
if r >= 0 and r < rows and c >= 0 and c < cols: | |
return manhattan_grid[r,c] | |
else: | |
return None | |
# This function finds the entities in the NW, NE and SW blocks | |
def find_entities((r, c), (old_r, old_c)): | |
nw_block_entity = get_block_entity(r - 1, c - 1) | |
ne_block_entity = get_block_entity(r - 1, c) | |
sw_block_entity = get_block_entity(r, c - 1) | |
if old_c != c: | |
return (nw_block_entity, sw_block_entity) | |
elif old_r != r: | |
return (nw_block_entity, ne_block_entity) | |
rabbit_buttons = [] | |
normal_rabbit_color = (.0, .0, .0, 1.0) | |
gohst_rabbit_color = (.0, .0, .0, 0.5) | |
pressed_buttons = [] | |
old_rabbit_row = None | |
old_rabbit_col = None | |
def button_pressed(sender): | |
global money_balence, old_rabbit_col, old_rabbit_row | |
for rabbit_button in rabbit_buttons: | |
rabbit_col = rabbit_button['col_number'] | |
rabbit_row = rabbit_button['row_number'] | |
if rabbit_button['rabbit'] == sender: | |
row_number = rabbit_row | |
col_number = rabbit_col | |
if sender.tint_color == normal_rabbit_color and sender not in pressed_buttons: | |
old_rabbit_row = row_number | |
old_rabbit_col = col_number | |
for rabbit_button in rabbit_buttons: | |
if rabbit_button['row_number'] == row_number + 1 and rabbit_button['col_number'] == col_number: | |
rabbit_button['rabbit'].tint_color = gohst_rabbit_color | |
rabbit_button['rabbit'].image = ui.Image('emj:Rabbit_Face') | |
if rabbit_button['row_number'] == row_number and rabbit_button['col_number'] == col_number + 1: | |
rabbit_button['rabbit'].tint_color = gohst_rabbit_color | |
rabbit_button['rabbit'].image = ui.Image('emj:Rabbit_Face') | |
pressed_buttons.append(sender) | |
if sender.tint_color == gohst_rabbit_color: | |
new_pos = (row_number, col_number) | |
old_pos = (old_rabbit_row, old_rabbit_col) | |
nearby = find_entities(new_pos, old_pos) | |
for item in nearby: | |
if item == 'W': | |
money_balence -= fox | |
if item == 'B': | |
money_balence += bank_money | |
sender.tint_color = normal_rabbit_color | |
for rabbit in rabbit_buttons: | |
if rabbit['rabbit'].tint_color == gohst_rabbit_color: | |
rabbit['rabbit'].image = None | |
score_label.text = 'Money: '+ str(money_balence) | |
for r in range(rows+1): | |
for c in range(cols+1): | |
test_rabbit_button = ui.Button() | |
if r == 0 and c == 0: | |
test_rabbit_button.image = ui.Image('emj:Rabbit_Face') | |
test_rabbit_button.tint_color = normal_rabbit_color | |
test_rabbit_button.x = 295.6 + c*float(board.width)/cols | |
test_rabbit_button.y = -5 + r*float(board.height)/rows | |
test_rabbit_button.width = 50 | |
test_rabbit_button.height = 50 | |
test_rabbit_button.action = button_pressed | |
v.add_subview(test_rabbit_button) | |
blocks.append({'rabbit' : test_rabbit_button, 'original_color' : block.background_color, 'queens_eating' : 0, 'row_number' : r, 'column_number' : c}) | |
v.add_subview(test_rabbit_button) | |
rabbit_buttons.append({'rabbit': test_rabbit_button, 'row_number': r, 'col_number': c}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment