Skip to content

Instantly share code, notes, and snippets.

@ssophwang
Created June 10, 2017 18:51
Show Gist options
  • Save ssophwang/1e558d49ea812efe5b99f776bc186dc8 to your computer and use it in GitHub Desktop.
Save ssophwang/1e558d49ea812efe5b99f776bc186dc8 to your computer and use it in GitHub Desktop.
Rabbit_Robber.py
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