Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
Number bonds, good for kids
-
# coding: utf-8 from scene import * import sound import random import math import console import speech A = Action happy_faces = (Texture('emj:Grinning'),Texture('emj:Kissing_2'),Texture('emj:Monkey_Face'),Texture('emj:Smiling_1'),Texture('emj:Smiling_2'),Texture('emj:Smiling_4'),Texture('emj:Smiling_6'),Texture('emj:Stuck-Out_Tongue_2'),Texture('emj:Winking')) speech.say('welcome to number bonds... what is your name please?') name = console.input_alert('WELCOME TO NUMBER BONDS🤔','Name',hide_cancel_button=True) thank_you = 'thank you %s' % name speech.say(thank_you) class rand_color(object): def get(self): return float(random.randrange(0,10)) / 10 class MyScene (Scene): def setup(self): #setup background and number key-pad# rect = ui.Path.rounded_rect(0,0,self.size.x-10,160,15) panel = ShapeNode(rect,parent=self) panel.position = (self.size.x/2,150) panel.color = '#ffffc9' panel.line_width = 10 panel.stroke_color = '#ffff28' col = rand_color() self.background_color = '#86aeff' self.number_list = [] self.total = 0 x = 30 y = 200 num = 0 while num < 11: a = col.get() b = col.get() c = col.get() number = LabelNode(str(num),parent=self) number.position = (x,y) number.scale = 3 number.color = (a,b,c) self.number_list.append(number) x += 50 num += 1 if x > 300: x = 30 y -= 100 #set up number bonds# x2, y2 = self.size / 2 circ_shape = ui.Path.oval(0,0,80,80) circle1 = ShapeNode(circ_shape,parent=self) circle1.position = (x2,y2+230) circle1.line_width = 10 circle1.stroke_color = '#ff6b6b' circle2 = ShapeNode(circ_shape,parent=self) circle2.position = (circle1.position.x/2,y2+160) circle2.line_width = 10 circle2.stroke_color = '#6b6bff' circle3 = ShapeNode(circ_shape,parent=self) circle3.position = (circle1.position.x/2*3,y2+160) circle3.line_width = 10 circle3.stroke_color = '#6b6bff' self.check = ShapeNode(rect,parent=self) self.check.position = (x2,y2+50) self.check.line_width = 10 self.check.stroke_color = '#000000' self.check.scale = 0.5 check_label = LabelNode('CHECK',parent=self) check_label.position = self.check.position check_label.color = 'black' check_label.scale = 2 self.master = random.randrange(30,100) self.num1 = random.randrange(1,self.master-10) self.answer = self.master - self.num1 self.guess = 0 self.master_label = LabelNode(str(self.master),parent=self) self.master_label.position = circle1.position self.master_label.color = 'black' self.master_label.scale = 2 self.num1_label = LabelNode(str(self.num1),parent=self) self.num1_label.position = circle2.position self.num1_label.color = 'black' self.num1_label.scale = 2 self.guess_label = LabelNode(str(self.guess),parent=self) self.guess_label.position = circle3.position self.guess_label.color = 'black' self.guess_label.scale = 2 self.tries = 0 self.correct = 0 self.correct_messages = ['well done','excellent','your the best','fandabidozee','boom ting','bang on','bet you do this in your sleep'] def reset(self): self.master = random.randrange(30,100) self.num1 = random.randrange(1,self.master-10) self.answer = self.master - self.num1 self.guess = 0 self.master_label.text = str(self.master) self.num1_label.text = str(self.num1) self.guess_label.text = str(self.guess) def update(self): pass def touch_began(self, touch): global name x, y = touch.location for number in self.number_list: x1, y1, x2, y2 = number.frame if x1 < x < (x1 + x2) and y1 < y < (y1 + y2): num = int(number.text) self.guess += num self.guess_label.text = str(self.guess) if num == 0: self.guess = 0 self.guess_label.text = str(self.guess) x1, y1, x2, y2 = self.check.frame if x1 < x < x1+x2 and y1 < y < y1+y2: if self.answer == self.guess: # IF ANSWER'S CORRECT speech.say(name) speech.say(self.correct_messages[random.randrange(0,len(self.correct_messages))]) self.tries += 1 self.correct += 1 sound.play_effect('game:Ding_3') animation = A.group(A.move_by(self.size.x+30,0,3),A.rotate_by(-5,3)) happy = SpriteNode(happy_faces[random.randrange(0,len(happy_faces))],parent=self) happy.position = (0,260) happy.run_action(animation) else: #IF ANSWER'S WRONG self.tries += 1 sound.play_effect('game:Error') self.reset() appraisal = self.tries % 5 if appraisal == 0 and self.tries > 0: message = '%d out of %d' % (self.correct, self.tries) console.hud_alert(message) if __name__ == '__main__': run(MyScene(),PORTRAIT, show_fps=False)```