Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/data.py
diff options
context:
space:
mode:
Diffstat (limited to 'data.py')
-rw-r--r--data.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/data.py b/data.py
new file mode 100644
index 0000000..dd45592
--- /dev/null
+++ b/data.py
@@ -0,0 +1,83 @@
+import random, math
+
+class LevelData():
+ def __init__(self):
+ self.digits = []
+ self.min_level = 1
+ self.max_level = 5
+ self.thresh_up = 6
+ self.thresh_down = 0
+ self.current_level = 1
+ self.level_change = 0
+ self.level_score = 0
+ self.question_max = 6
+ self.question_count = 0
+ self.thresh_slider = 0
+ self.thresh_mult = 2
+ self.thresh_entry = 4
+ random.seed()
+
+ def check_answer(self, response):
+ if response == self.correct_answer:
+ self.level_score += 1
+ else:
+ self.level_score -= 1
+ if self.question_count == self.question_max:
+ if self.level_score >= self.thresh_up and self.current_level < self.max_level:
+ self.level_change = 1
+ elif self.level_score <= self.thresh_down and self.current_level > self.min_level:
+ self.level_change = -1
+ self.question_count = self.level_score = 0
+ return self.correct_answer == response
+
+ def increase_level(self):
+ if self.current_level < self.max_level:
+ self.current_level += 1
+ self.answer_decade = int(10**self.current_level)
+ self.level_change = 0
+
+ def decrease_level(self):
+ if self.current_level > self.min_level:
+ self.current_level -= 1
+ self.answer_decade = int(10**self.current_level)
+ self.level_change = 0
+
+ def gen_random(self):
+ if self.level_change == 1:
+ self.increase_level()
+ elif self.level_change == -1:
+ self.decrease_level()
+ self.question_count += 1
+ # generate a random number. don't use digits 0 or 9; they cause duplicates in the mult choice answer set.
+ self.digits = range(1,9)
+ random.shuffle(self.digits)
+ str_num = ""
+ for x in range(0, self.current_level + 2):
+ str_num += str(random.choice(self.digits))
+ self.random_number = int(str_num)
+ self.answer_decade = int(math.pow(10, self.current_level))
+ self.correct_answer = int(round(self.random_number/(self.answer_decade*1.0), 0) * self.answer_decade)
+ # create the multiple choice possibilities
+ self.mult=[]
+ self.mult.append(int(math.floor(self.random_number/(self.answer_decade*1.0)) * self.answer_decade))
+ self.mult.append(int(math.ceil(self.random_number/(self.answer_decade*1.0)) * self.answer_decade))
+ if self.current_level == self.min_level:
+ self.mult.append(int(math.floor(self.random_number/(self.answer_decade*10.0)) * self.answer_decade * 10.0))
+ self.mult.append(int(math.ceil(self.random_number/(self.answer_decade*10.0)) * self.answer_decade * 10.0))
+ elif self.current_level == self.max_level:
+ self.mult.append(int(math.floor(self.random_number/(self.answer_decade*0.1)) * self.answer_decade * 0.1))
+ self.mult.append(int(math.ceil(self.random_number/(self.answer_decade*0.1)) * self.answer_decade * 0.1))
+ else:
+ factor = random.choice([0.1,10.0])
+ self.mult.append(int(math.floor(self.random_number/(self.answer_decade*factor)) * self.answer_decade * factor))
+ self.mult.append(int(math.ceil(self.random_number/(self.answer_decade*factor)) * self.answer_decade * factor))
+
+ def show_game_data(self):
+ temp = "\nLevel: " + str(self.current_level)
+ #temp += "\nRandom Number: " + str(self.random_number)
+ #temp += "\nDecade: " + str(self.answer_decade)
+ #temp += "\nCorrect Answer: " + str(self.correct_answer)
+ #temp += "\nMult Choices: " + str(self.mult)
+ temp += "\nScore: " + str(self.level_score)
+ temp += "\nCount: " + str(self.question_count)
+ return temp