diff --git a/main.py b/main.py index 690144d..b1be374 100644 --- a/main.py +++ b/main.py @@ -11,6 +11,8 @@ from cmu_graphics import * import json +import random +import math # ============================================================================= @@ -52,9 +54,9 @@ def loadSave(path="save.json"): # starts cleanly. This is the only place that reads the save file. defaultState = { "cash": 0, - "owned_baits": [], + "owned_baits": ["Worms"], "owned_upgrades": [], - "current_bait": "worm", + "current_bait": "Worms", "catch_log": [] } try: @@ -97,6 +99,14 @@ AVAILABLE_UPGRADES = [ # (name, bonus_type, bonus_modifier, price) ("Galaxy Rod", "count", 3, 40000) ] +AVAILABLE_BAITS = [ # (name, max_difficulty) + ("Worms", 30) + ("Worms", 50) + ("Worms", 70) + ("Worms", 100) + +] + def onAppStart(app): # cmu_graphics entry point. Initialize ALL app.* state here: # - window/layout constants (width, height, dock/water/grass regions) @@ -127,8 +137,7 @@ def onAppStart(app): #SKILL CHECK app.skillCheckAngle = 0 app.skillCheckSpeed = 1 - app.skillCheckBars = [] - app.skillCheckSpeed = 1 + app.skillCheckBars = [] # tuples of (position, length) app.skillCheckFailed = False #FISHING @@ -142,6 +151,10 @@ def resetFishingState(app): # begin. Clears any active skill-check data, the pending random bite timer, # and the currently-hooked creature. Called at startup and after each catch # is resolved/dismissed. + app.skillCheckAngle = 0 #measured in degrees + app.skillCheckSpeed = 1 + app.skillCheckBars = [] + app.skillCheckFailed = False pass @@ -163,10 +176,30 @@ def startSkillCheck(app, creature): app.scene = "skill-check" difficulty = creature["difficulty"] - fishingPower = 1 + sum(upgrade[2] for upgrade in AVAILABLE_UPGRADES if (upgrade[0] in app.save["owned_upgrades"] and upgrade[1] == "power")) + fishingPower = 1 + sum([upgrade[2] for upgrade in AVAILABLE_UPGRADES if (upgrade[0] in app.save["owned_upgrades"] and upgrade[1] == "power")]) app.skillCheckSpeed = difficulty / fishingPower - pass + numBars = difficulty // 10 - sum([upgrade[2] for upgrade in AVAILABLE_UPGRADES if (upgrade[0] in app.save["owned_upgrades"] and upgrade[1] == "count")]) + numBars = max(numBars, 1) + + lastPos = 0 + lastLen = 0 + while len(app.skillCheckBars) < numBars: + newLen = random.randrange((1 - (difficulty / 100)) * 50 * math.prod([upgrade[2] for upgrade in AVAILABLE_UPGRADES if (upgrade[0] in app.save["owned_upgrades"] and upgrade[1] == "timing")])) + #take the end of the last bar, and add a random amount between 5 degrees + #and the remaining amount to the end divided by the number of bars left + lastEndPos = (lastPos + lastLen) + newPos = lastEndPos + random.randrange(5, (360 - lastEndPos) // (numBars - len(app.skillCheckBars))) + #cap it to ensure we dont go over + newPos = min(newPos, 360-newLen) + #TODO: double check that multiple bars do not overlap + app.skillCheckBars.append((newPos, newLen)) + lastPos = newPos + lastLen = newLen + + + + # ============================================================================= diff --git a/time_log b/time_log index eeb9497..8c41691 100644 --- a/time_log +++ b/time_log @@ -1,5 +1,5 @@ ############################################### -Total Time: 110 minutes +Total Time: 150 minutes ############################################### ############################################### @@ -33,3 +33,11 @@ End Time: 1:20pm Duration: 20 minutes Description: adding more upgrades, fixing citations, considering how I actually want game state to progress ############################################### + +############################################### +Date: 07-Oct +Start Time: 1:30pm +End Time: 1:50pm +Duration: 20 minutes +Description: continuing work with making upgrades take effect for skill checks +###############################################