from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics.vertex_instructions import (Rectangle,Ellipse,Line)
from kivy.graphics import Color
import time
Builder.load_string('''
<FloatLayout>:
Button:
text: "Exécute"
on_press: root.execute()
Label:
id: label_name
size_hint_y: 0.5
text: "Text"
''')
class FloatLayout(FloatLayout):
def execute(self):
mylabel = self.ids.label_name
for i in range(10):
print i
time.sleep(1)
mylabel.text=str(i)
with self.canvas:
Color(0, 1, 0, 1)
Line(points=[0,0,100+10*i,200])
runTouchApp(FloatLayout())
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics.vertex_instructions import (Rectangle,Ellipse,Line)
from kivy.graphics import Color
from kivy.clock import Clock
import math
import time
from kivy.clock import Clock
Builder.load_string('''
<FloatLayout>:
BoxLayout:
orientation: 'vertical'
Label:
text:"Hanoi towers"
size_hint_y: 0.2
BoxLayout:
size_hint_y: 0.3
Label:
size_hint_x: 0.5
Label:
size_hint_x: 0.3
text:"LEGO NXT : "
CheckBox:
size_hint_x: 0.2
id: checkbox_name
Label:
size_hint_x: 0.5
BoxLayout:
size_hint_y: 0.3
Label:
size_hint_x: 0.5
text:"Number of rings : "
Label:
size_hint_x: 0.1
text: str(int(slider_name.value))
Slider:
id: slider_name
size_hint_x: 2
step: 1
min:1
max:9
value: 2
BoxLayout:
size_hint_y: 0.3
Label:
size_hint_x: 0.5
text:"Delay : "
Label:
size_hint_x: 0.1
text: str(int(slider2_name.value))
Slider:
id: slider2_name
size_hint_x: 2
step: 1
min:0
max:9
value: 1
Label:
size_hint_y: 0.4
text: 'Time estimation : ' + str(int((2**slider_name.value-1)*slider2_name.value)) + ' second(s)'
Button:
size_hint_y: 0.5
text: "Execute"
on_press: root.execute(self)
Label:
id: label_action__name
size_hint_y: 0.5
text: "Action : "
Label:
id: label_result__name
size_hint_y: 0.5
text: "Rings position : "
Label:
size_hint_y: 3
''')
class FloatLayout(FloatLayout):
m1=[]
m2=[]
m3=[]
text_action=''
end = 0
def hanoi(self,n,s,d,t):
if n>0:
self.hanoi(n-1,s,t,d)
if s==1:
self.m1.remove(n)
if d==1:
self.m1.append(n)
if s==2:
self.m2.remove(n)
if d==2:
self.m2.append(n)
if s==3:
self.m3.remove(n)
if d==3:
self.m3.append(n)
self.m1.sort()
self.m2.sort()
self.m3.sort()
self.text_action='Move ring ' + str(n) + ' from ' + str(s) + ' to '+ str(d)
print self.text_action,self.m1,self.m2,self.m3
time.sleep(1)
self.hanoi(n-1,t,d,s)
def update(self,*args):
self.ids.label_result__name.text='Rings position : ' + str(self.m1)+' '+str(self.m2)+' '+str(self.m3)
self.ids.label_action__name.text=self.text_action
if self.end == 1:
return False # unschedule
def execute(self,btn):
delai = self.ids.slider2_name
Clock.schedule_interval(self.update,delai.value)
level = self.ids.slider_name
self.m1=range(1,int(level.value)+1)
self.m2=[]
self.m3=[]
self.hanoi(int(level.value),1,3,2)
end = 1
print 'End'
runTouchApp(FloatLayout())
#time.sleep(1)
from kivy.clock import Clock
Clock.schedule_once(lambda dt: self.hanoi(n - 1, t, d, s), 1)
#self.hanoi(n-1,s,t,d)
Clock.schedule_once(lambda dt: self.hanoi(n-1,s,t,d), 5)
if s==1:
self.m1.remove(n)
if d==1:
self.m1.append(n)
if s==2:
self.m2.remove(n)
if d==2:
self.m2.append(n)
if s==3:
self.m3.remove(n)
if d==3:
self.m3.append(n)
self.m1.sort()
self.m2.sort()
self.m3.sort()
self.text_action='Move ring ' + str(n) + ' from ' + str(s) + ' to '+ str(d)
print self.text_action,self.m1,self.m2,self.m3
# time.sleep(1)
Clock.schedule_once(lambda dt: self.hanoi(n - 1, t, d, s), 5)
# self.hanoi(n-1,t,d,s)
def update(self,*args):
self.ids.label_result__name.text='Rings position : ' + str(self.m1)+' '+str(self.m2)+' '+str(self.m3)
self.ids.label_action__name.text=self.text_action
if self.end == 1:
return False # unschedule
def execute(self,btn):
delai = self.ids.slider2_name
Clock.schedule_interval(self.update,0.1)
level = self.ids.slider_name
self.m1=range(1,int(level.value)+1)
self.m2=[]
self.m3=[]
Clock.schedule_once(lambda dt: self.hanoi(int(level.value),1,3,2), 5)
# self.hanoi(int(level.value),1,3,2)
end = 1
print 'End'
runTouchApp(FloatLayout())
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics.vertex_instructions import (Rectangle,Ellipse,Line)
from kivy.graphics import Color
from kivy.clock import Clock
import math
import time
from kivy.clock import Clock
Builder.load_string('''
<Hanoi_Class>:
class Hanoi_Class(FloatLayout):
text_action=''
end = 0
def hanoi(self,number,start,end,temp):
if number==1:
self.text_action="Move ring "+str(rings[start-1][0])+" altitude "+str(len(rings[start-1]))+" from position "+str(start)+" to position "+str(end)
print (self.text_action)
rings[end-1].insert(0,rings[start-1][0])
del(rings[start-1][0])
print("Result : "+str(rings)+"\n")
else:
Clock.schedule_once(lambda dt: self.hanoi(number-1,start,temp,end),delay.value)
Clock.schedule_once(lambda dt: self.hanoi(1,start,end,temp),delay.value)
time.sleep(delay.value+1)
Clock.schedule_once(lambda dt: self.hanoi(number-1,temp,end,start),delay.value)
def update(self,*args):
self.ids.label_result__name.text='Rings position : ' + str(rings)
self.ids.label_action__name.text=self.text_action
if self.end == 1:
return False # unschedule
def execute(self,btn):
global rings
global delay
delay = self.ids.slider2_name
Clock.schedule_interval(self.update,0.1)
level = self.ids.slider_name
rings=[list(range(1,level.value+1)),[],[]]
self.hanoi(int(level.value),1,3,2)
end = 1
print ('End')
runTouchApp(Hanoi_Class())