diff --git a/mu/logic.py b/mu/logic.py index 80c1dbf71..8f7b999eb 100644 --- a/mu/logic.py +++ b/mu/logic.py @@ -146,6 +146,25 @@ "flappybird.py", "flappybird_neosoco.py", ] +EXAMPLE_NEOPIA = [ + "01-01_KobiBot.py", + "01-02_FutbolBot.py", + "01-06_Sehrli_ansanmbl.py", + "02-01-01_Barami.py", + "02-01-02_Barami.py", + "02-02_Neo_Bigl.py", + "02-03_Neo_kliner.py", + "02-04-01_Aqlli_avtomobil.py", + "02-04-02_Aqlli_avtomobil.py", + "02-05-01_Chiziq_trekkeri.py", + "02-05-02_Chiziq_trekkeri.py", + "04-01_Fonar.py", + "04-03-01_Aqlli_avtomobil_2.py", + "04-03-02_Aqlli_avtomobil_2.py", + "04-04_Samosval_avtomobili.py", + "04-05_Robot_qol.py", + "04-06_Konveyer.py" +] MOTD = [ # Candidate phrases for the message of the day (MOTD). _("Hello, World!"), _( @@ -905,6 +924,7 @@ def setup(self, modes): examples_path = os.path.join(wd, "examples") example_entry_b_path = os.path.join(wd, "examples/entry_basic/") example_pgz_path = os.path.join(wd, "examples/pygame_zero/") + example_neopia_path = os.path.join(wd, "examples/neopia/") if not os.path.exists(images_path): logger.debug("Creating directory: {}".format(images_path)) os.makedirs(images_path) @@ -984,6 +1004,21 @@ def setup(self, modes): shutil.copy( path(sfx, "pygamezero/"), os.path.join(example_pgz_path + 'images', sfx) ) + # Neopia examples + if not os.path.exists(example_neopia_path): + logger.debug("Creating directory: {}".format(example_neopia_path)) + os.makedirs(example_neopia_path) + for sfx in EXAMPLE_NEOPIA: + shutil.copy( + path(sfx, "neopia/"), os.path.join(example_neopia_path, sfx) + ) + if not os.path.exists(example_neopia_path + 'images'): + logger.debug("Creating directory: {}".format('images')) + os.makedirs(example_neopia_path + 'images') + for sfx in EXAMPLE_PGZ_IMAGES: + shutil.copy( + path(sfx, "neopia/"), os.path.join(example_neopia_path + 'images', sfx) + ) # Ensure Web based assets are copied over. template_path = os.path.join(wd, "templates") static_path = os.path.join(wd, "static") diff --git a/mu/resources/neopia/01-01 KobiBot.py b/mu/resources/neopia/01-01 KobiBot.py new file mode 100644 index 000000000..cfa9c28d2 --- /dev/null +++ b/mu/resources/neopia/01-01 KobiBot.py @@ -0,0 +1,15 @@ +from neopia import * + +n = Neosoco() + +# LEDni yoqib 1 soniyadan keyin o'chirish +n.led_on('out1','100') +wait(1000) # milisekund orqali hisoblanadi + + +# Takrorlab miltiratish +while True: + n.led_on('out1','100') + wait(1000) + n.led_off('out1') + wait(1000) \ No newline at end of file diff --git a/mu/resources/neopia/01-02 FutbolBot.py b/mu/resources/neopia/01-02 FutbolBot.py new file mode 100644 index 000000000..5b08cacf2 --- /dev/null +++ b/mu/resources/neopia/01-02 FutbolBot.py @@ -0,0 +1,15 @@ +from neopia import * + +n = Neosoco() +while True: + key = Keyboard.read() + if key == Keyboard.UP: + n.motor_rotate('both', 'forward', '10') + elif key == Keyboard.DOWN: + n.motor_rotate('both', 'backward', '10') + elif key == Keyboard.LEFT: + n.motor_rotate('both', 'left', '10') + elif key == Keyboard.RIGHT: + n.motor_rotate('both', 'right', '10') + elif key == ' ': + n.motor_stop('both') diff --git a/mu/resources/neopia/01-06 Sehrli ansanmbl.py b/mu/resources/neopia/01-06 Sehrli ansanmbl.py new file mode 100644 index 000000000..23da41b1d --- /dev/null +++ b/mu/resources/neopia/01-06 Sehrli ansanmbl.py @@ -0,0 +1,9 @@ +# Ichki buzzer orqali yangrash + +from neopia import * + +n = Neosoco() +while True: + n.buzzer_by_port('in1') + wait(200) + n.buzzer_stop() \ No newline at end of file diff --git a/mu/resources/neopia/02-01-01 Barami.py b/mu/resources/neopia/02-01-01 Barami.py new file mode 100644 index 000000000..2b96d7800 --- /dev/null +++ b/mu/resources/neopia/02-01-01 Barami.py @@ -0,0 +1,11 @@ +# Ovoz sensor orqali Baramining tezligini boshqarish + +from neopia import * + +n = Neosoco() +while True: + if n.get_value('in3') < 30: + n.motor_stop('right') + else: + n.motor_rotate('right', 'forward', 'in3') + \ No newline at end of file diff --git a/mu/resources/neopia/02-01-02 Barami.py b/mu/resources/neopia/02-01-02 Barami.py new file mode 100644 index 000000000..2d2f19f50 --- /dev/null +++ b/mu/resources/neopia/02-01-02 Barami.py @@ -0,0 +1,15 @@ +# Klaviatura orqali Baramining tezligini boshqarish + +from neopia import * + +n = Neosoco() +while True: + key = Keyboard.read() + if key == '0': + n.motor_stop('right') + elif key == '1': + n.motor_rotate('right', 'forward', '10') + elif key == '2': + n.motor_rotate('right', 'forward', '50') + elif key == '3': + n.motor_rotate('right', 'forward', '100') \ No newline at end of file diff --git a/mu/resources/neopia/02-02 Neo Bigl.py b/mu/resources/neopia/02-02 Neo Bigl.py new file mode 100644 index 000000000..b61544ae6 --- /dev/null +++ b/mu/resources/neopia/02-02 Neo Bigl.py @@ -0,0 +1,13 @@ +from neopia import * + +n = Neosoco() + +while True: + while n.get_value('in3') > 50: + continue + while n.get_value('in3') <= 50: + continue + + n.motor_rotate('both', 'left', '50') + wait(3000) + n.motor_stop('both') \ No newline at end of file diff --git a/mu/resources/neopia/02-03 Neo kliner.py b/mu/resources/neopia/02-03 Neo kliner.py new file mode 100644 index 000000000..73138a151 --- /dev/null +++ b/mu/resources/neopia/02-03 Neo kliner.py @@ -0,0 +1,8 @@ +from neopia import * + +n = Neosoco() +while True: + if n.get_value('in1') < 20: + n.motor_rotate('both', 'forward', '50') + else: + n.motor_stop('both') \ No newline at end of file diff --git a/mu/resources/neopia/02-04-01 Aqlli avtomobil.py b/mu/resources/neopia/02-04-01 Aqlli avtomobil.py new file mode 100644 index 000000000..22f48dc76 --- /dev/null +++ b/mu/resources/neopia/02-04-01 Aqlli avtomobil.py @@ -0,0 +1,16 @@ +# Masofa sensor orqali to’siqdan qochish dasturi + +from neopia import * + +n = Neosoco() +while True: + if n.get_value('in2') <= 7: + n.motor_move('backward') + wait(500) + n.motor_stop('both') + n.motor_move('left') + wait(1000) + n.motor_stop('both') + else: + n.motor_rotate('both', 'forward', '50') + diff --git a/mu/resources/neopia/02-04-02 Aqlli avtomobil.py b/mu/resources/neopia/02-04-02 Aqlli avtomobil.py new file mode 100644 index 000000000..eed3bb390 --- /dev/null +++ b/mu/resources/neopia/02-04-02 Aqlli avtomobil.py @@ -0,0 +1,8 @@ +# Acc Kontrol dasturalsh + +from neopia import * + +n = Neosoco() +while True: + n.motor_rotate('both', 'forward', 'in2') + n.buzzer_by_port('in2') \ No newline at end of file diff --git a/mu/resources/neopia/02-05-01 Chiziq trekkeri.py b/mu/resources/neopia/02-05-01 Chiziq trekkeri.py new file mode 100644 index 000000000..60aeb65ac --- /dev/null +++ b/mu/resources/neopia/02-05-01 Chiziq trekkeri.py @@ -0,0 +1,11 @@ +from neopia import * + +n = Neosoco() +while True: + if n.get_value('in1') and n.get_value('in2') > 40: + n.motor_rotate('both', 'forward', '30') + else: + if n.get_value('in1') <= 40: + n.motor_stop('left') + if n.get_value('in2') <= 40: + n.motor_stop('right') diff --git a/mu/resources/neopia/02-05-02 Chiziq trekkeri.py b/mu/resources/neopia/02-05-02 Chiziq trekkeri.py new file mode 100644 index 000000000..afb41b8c9 --- /dev/null +++ b/mu/resources/neopia/02-05-02 Chiziq trekkeri.py @@ -0,0 +1,15 @@ +from neopia import * + +n = Neosoco() +while True: + if n.get_value('in1') and n.get_value('in2') > 40: + n.motor_rotate('both', 'forward', '30') + else: + if n.get_value('in1') <= 40: + n.motor_stop('left') + if n.get_value('in2') <= 40: + n.motor_stop('right') + if n.get_value('in1') and n.get_value('in2') <= 40: + n.motor_move('left') + wait(500) + n.motor_stop('both') \ No newline at end of file diff --git a/mu/resources/neopia/04-01 Fonar.py b/mu/resources/neopia/04-01 Fonar.py new file mode 100644 index 000000000..f9f389d81 --- /dev/null +++ b/mu/resources/neopia/04-01 Fonar.py @@ -0,0 +1,8 @@ +from neopia import * + +n = Neosoco() +while True: + if n.get_value('in1') == 255: + n.led_on('out1', '100') + else: + n.led_off('out1') \ No newline at end of file diff --git a/mu/resources/neopia/04-03-01 Aqlli avtomobil 2.py b/mu/resources/neopia/04-03-01 Aqlli avtomobil 2.py new file mode 100644 index 000000000..9ebd3483c --- /dev/null +++ b/mu/resources/neopia/04-03-01 Aqlli avtomobil 2.py @@ -0,0 +1,24 @@ +from neopia import * + +n = Neosoco() +while True: + if n.get_value('in2') <= 10: + n.motor_stop('both') + n.servo_reset_degree('out3') + wait(100) + n.servo_rotate_by_degree('out3', 'forward', '100', '90') + wait(1000) + chap_m = n.get_value('in2') + n.servo_rotate_by_degree('out3', 'backward', '100', '90') + wait(1000) + ong_m = n.get_value('in2') + n.servo_rotate_by_degree('out3', 'forward', '100', '0') + wait(1000) + if chap_m > ong_m: + n.motor_rotate('both', 'left', '50') + wait(1000) + else: + n.motor_rotate('both', 'right', '50') + wait(1000) + else: + n.motor_rotate('both', 'forward', '50') diff --git a/mu/resources/neopia/04-03-02 Aqlli avtomobil 2.py b/mu/resources/neopia/04-03-02 Aqlli avtomobil 2.py new file mode 100644 index 000000000..989b00fcd --- /dev/null +++ b/mu/resources/neopia/04-03-02 Aqlli avtomobil 2.py @@ -0,0 +1,31 @@ +from neopia import * + +n = Neosoco() +# Masofa sensor orqali to‘siqni tekshirish uchun funksiya yaratish +def servo_motor(): + n.motor_stop('both') + n.servo_reset_degree('out3') + wait(100) + n.servo_rotate_by_degree('out3', 'forward', '100', '90') + wait(1000) + global chap_m + chap_m = n.get_value('in2') + n.servo_rotate_by_degree('out3', 'backward', '100', '90') + wait(1000) + global ong_m + ong_m = n.get_value('in2') + n.servo_rotate_by_degree('out3', 'forward', '100', '0') + wait(1000) + +# Funksiyadan foydalanib dastur tuzish +while True: + if n.get_value('in2') <= 10: + servo_motor() + if chap_m > ong_m: + n.motor_rotate('both', 'right', '50') + wait(1000) + else: + n.motor_rotate('both', 'left', '50') + wait(1000) + else: + n.motor_rotate('both', 'forward', '50') diff --git a/mu/resources/neopia/04-04 Samosval avtomobili.py b/mu/resources/neopia/04-04 Samosval avtomobili.py new file mode 100644 index 000000000..fc60463f7 --- /dev/null +++ b/mu/resources/neopia/04-04 Samosval avtomobili.py @@ -0,0 +1,10 @@ +from neopia import * + +n = Neosoco() +n.servo_reset_degree('out1') +while True: + key = Keyboard.read() + if key == '4': + n.servo_rotate_by_degree('out1', 'forward', '20', '60') + if key == '1': + n.servo_rotate_by_degree('out1', 'forward', '20', '0') \ No newline at end of file diff --git a/mu/resources/neopia/04-05 Robot qo_l.py b/mu/resources/neopia/04-05 Robot qo_l.py new file mode 100644 index 000000000..5feb78199 --- /dev/null +++ b/mu/resources/neopia/04-05 Robot qo_l.py @@ -0,0 +1,16 @@ +from neopia import * + +n = Neosoco() +while True: + if n.get_value('in1') < 80 and n.get_value('in2') < 80: + n.servo_stop('out1') + n.motor_stop('both') + elif n.get_value('in1') > 80 and n.get_value('in2') > 80: + n.servo_stop('out1') + n.motor_rotate('both', 'backward', '40') + elif n.get_value('in1') > 80 and n.get_value('in2') < 80: + n.servo_rotate('out1', 'forward', '10') + n.motor_rotate('both', 'forward', '30') + elif n.get_value('in1') < 80 and n.get_value('in2') > 80: + n.servo_rotate('out1', 'backward', '10') + n.motor_rotate('both', 'forward', '30') diff --git a/mu/resources/neopia/04-06 Konveyer .py b/mu/resources/neopia/04-06 Konveyer .py new file mode 100644 index 000000000..c9aa1ae3b --- /dev/null +++ b/mu/resources/neopia/04-06 Konveyer .py @@ -0,0 +1,13 @@ +from neopia import * + +n = Neosoco() +n.servo_reset_degree('out1') +n.motor_rotate('both', 'forward', '40') +while True: + if n.get_value('in1') > 20 and n.get_value('in2') > 20: + n.servo_rotate_by_degree('out1', 'forward', '50', '20') + wait(500) + if n.get_value('in1') <= 20 and n.get_value('in2') <= 20: + if n.get_value('in2') > 0: + n.servo_rotate_by_degree('out1', 'backward', '50', '20') + wait(500) \ No newline at end of file diff --git a/mu/resources/pygamezero/nanum_square.ttf b/mu/resources/pygamezero/fonts/nanum_square.ttf similarity index 100% rename from mu/resources/pygamezero/nanum_square.ttf rename to mu/resources/pygamezero/fonts/nanum_square.ttf diff --git a/mu/resources/pygamezero/alien.png b/mu/resources/pygamezero/images/alien.png similarity index 100% rename from mu/resources/pygamezero/alien.png rename to mu/resources/pygamezero/images/alien.png diff --git a/mu/resources/pygamezero/alien_hurt.png b/mu/resources/pygamezero/images/alien_hurt.png similarity index 100% rename from mu/resources/pygamezero/alien_hurt.png rename to mu/resources/pygamezero/images/alien_hurt.png diff --git a/mu/resources/pygamezero/background.png b/mu/resources/pygamezero/images/background.png similarity index 100% rename from mu/resources/pygamezero/background.png rename to mu/resources/pygamezero/images/background.png diff --git a/mu/resources/pygamezero/bird0.png b/mu/resources/pygamezero/images/bird0.png similarity index 100% rename from mu/resources/pygamezero/bird0.png rename to mu/resources/pygamezero/images/bird0.png diff --git a/mu/resources/pygamezero/bird1.png b/mu/resources/pygamezero/images/bird1.png similarity index 100% rename from mu/resources/pygamezero/bird1.png rename to mu/resources/pygamezero/images/bird1.png diff --git a/mu/resources/pygamezero/bird2.png b/mu/resources/pygamezero/images/bird2.png similarity index 100% rename from mu/resources/pygamezero/bird2.png rename to mu/resources/pygamezero/images/bird2.png diff --git a/mu/resources/pygamezero/birddead.png b/mu/resources/pygamezero/images/birddead.png similarity index 100% rename from mu/resources/pygamezero/birddead.png rename to mu/resources/pygamezero/images/birddead.png diff --git a/mu/resources/pygamezero/bottom.png b/mu/resources/pygamezero/images/bottom.png similarity index 100% rename from mu/resources/pygamezero/bottom.png rename to mu/resources/pygamezero/images/bottom.png diff --git a/mu/resources/pygamezero/boy_1.png b/mu/resources/pygamezero/images/boy_1.png similarity index 100% rename from mu/resources/pygamezero/boy_1.png rename to mu/resources/pygamezero/images/boy_1.png diff --git a/mu/resources/pygamezero/boy_2.png b/mu/resources/pygamezero/images/boy_2.png similarity index 100% rename from mu/resources/pygamezero/boy_2.png rename to mu/resources/pygamezero/images/boy_2.png diff --git a/mu/resources/pygamezero/boy_3.png b/mu/resources/pygamezero/images/boy_3.png similarity index 100% rename from mu/resources/pygamezero/boy_3.png rename to mu/resources/pygamezero/images/boy_3.png diff --git a/mu/resources/pygamezero/cat.png b/mu/resources/pygamezero/images/cat.png similarity index 100% rename from mu/resources/pygamezero/cat.png rename to mu/resources/pygamezero/images/cat.png diff --git a/mu/resources/pygamezero/cat1.png b/mu/resources/pygamezero/images/cat1.png similarity index 100% rename from mu/resources/pygamezero/cat1.png rename to mu/resources/pygamezero/images/cat1.png diff --git a/mu/resources/pygamezero/cat2.png b/mu/resources/pygamezero/images/cat2.png similarity index 100% rename from mu/resources/pygamezero/cat2.png rename to mu/resources/pygamezero/images/cat2.png diff --git a/mu/resources/pygamezero/cat3.png b/mu/resources/pygamezero/images/cat3.png similarity index 100% rename from mu/resources/pygamezero/cat3.png rename to mu/resources/pygamezero/images/cat3.png diff --git a/mu/resources/pygamezero/cat4.png b/mu/resources/pygamezero/images/cat4.png similarity index 100% rename from mu/resources/pygamezero/cat4.png rename to mu/resources/pygamezero/images/cat4.png diff --git a/mu/resources/pygamezero/cleaner.png b/mu/resources/pygamezero/images/cleaner.png similarity index 100% rename from mu/resources/pygamezero/cleaner.png rename to mu/resources/pygamezero/images/cleaner.png diff --git a/mu/resources/pygamezero/dala.png b/mu/resources/pygamezero/images/dala.png similarity index 100% rename from mu/resources/pygamezero/dala.png rename to mu/resources/pygamezero/images/dala.png diff --git a/mu/resources/pygamezero/desert.png b/mu/resources/pygamezero/images/desert.png similarity index 100% rename from mu/resources/pygamezero/desert.png rename to mu/resources/pygamezero/images/desert.png diff --git a/mu/resources/pygamezero/dog.png b/mu/resources/pygamezero/images/dog.png similarity index 100% rename from mu/resources/pygamezero/dog.png rename to mu/resources/pygamezero/images/dog.png diff --git a/mu/resources/pygamezero/eraser.png b/mu/resources/pygamezero/images/eraser.png similarity index 100% rename from mu/resources/pygamezero/eraser.png rename to mu/resources/pygamezero/images/eraser.png diff --git a/mu/resources/pygamezero/field.png b/mu/resources/pygamezero/images/field.png similarity index 100% rename from mu/resources/pygamezero/field.png rename to mu/resources/pygamezero/images/field.png diff --git a/mu/resources/pygamezero/floor.png b/mu/resources/pygamezero/images/floor.png similarity index 100% rename from mu/resources/pygamezero/floor.png rename to mu/resources/pygamezero/images/floor.png diff --git a/mu/resources/pygamezero/mole.png b/mu/resources/pygamezero/images/mole.png similarity index 100% rename from mu/resources/pygamezero/mole.png rename to mu/resources/pygamezero/images/mole.png diff --git a/mu/resources/pygamezero/pencil.png b/mu/resources/pygamezero/images/pencil.png similarity index 100% rename from mu/resources/pygamezero/pencil.png rename to mu/resources/pygamezero/images/pencil.png diff --git a/mu/resources/pygamezero/pink_leaf.png b/mu/resources/pygamezero/images/pink_leaf.png similarity index 100% rename from mu/resources/pygamezero/pink_leaf.png rename to mu/resources/pygamezero/images/pink_leaf.png diff --git a/mu/resources/pygamezero/splat.png b/mu/resources/pygamezero/images/splat.png similarity index 100% rename from mu/resources/pygamezero/splat.png rename to mu/resources/pygamezero/images/splat.png diff --git a/mu/resources/pygamezero/top.png b/mu/resources/pygamezero/images/top.png similarity index 100% rename from mu/resources/pygamezero/top.png rename to mu/resources/pygamezero/images/top.png diff --git a/mu/resources/pygamezero/toy_hammer.png b/mu/resources/pygamezero/images/toy_hammer.png similarity index 100% rename from mu/resources/pygamezero/toy_hammer.png rename to mu/resources/pygamezero/images/toy_hammer.png diff --git a/mu/resources/pygamezero/treasure_box.png b/mu/resources/pygamezero/images/treasure_box.png similarity index 100% rename from mu/resources/pygamezero/treasure_box.png rename to mu/resources/pygamezero/images/treasure_box.png diff --git a/mu/resources/pygamezero/cheer.ogg b/mu/resources/pygamezero/sounds/cheer.ogg similarity index 100% rename from mu/resources/pygamezero/cheer.ogg rename to mu/resources/pygamezero/sounds/cheer.ogg diff --git a/mu/resources/pygamezero/eep.wav b/mu/resources/pygamezero/sounds/eep.wav similarity index 100% rename from mu/resources/pygamezero/eep.wav rename to mu/resources/pygamezero/sounds/eep.wav diff --git a/mu/resources/pygamezero/meow1.wav b/mu/resources/pygamezero/sounds/meow1.wav similarity index 100% rename from mu/resources/pygamezero/meow1.wav rename to mu/resources/pygamezero/sounds/meow1.wav diff --git a/mu/resources/pygamezero/meow2.wav b/mu/resources/pygamezero/sounds/meow2.wav similarity index 100% rename from mu/resources/pygamezero/meow2.wav rename to mu/resources/pygamezero/sounds/meow2.wav diff --git a/mu/resources/pygamezero/meow3.wav b/mu/resources/pygamezero/sounds/meow3.wav similarity index 100% rename from mu/resources/pygamezero/meow3.wav rename to mu/resources/pygamezero/sounds/meow3.wav diff --git a/mu/resources/pygamezero/meow4.wav b/mu/resources/pygamezero/sounds/meow4.wav similarity index 100% rename from mu/resources/pygamezero/meow4.wav rename to mu/resources/pygamezero/sounds/meow4.wav diff --git a/mu/resources/pygamezero/splat.wav b/mu/resources/pygamezero/sounds/splat.wav similarity index 100% rename from mu/resources/pygamezero/splat.wav rename to mu/resources/pygamezero/sounds/splat.wav diff --git a/mu/resources/pygamezero/toi.ogg b/mu/resources/pygamezero/sounds/toi.ogg similarity index 100% rename from mu/resources/pygamezero/toi.ogg rename to mu/resources/pygamezero/sounds/toi.ogg diff --git a/mu/resources/pygamezero/warning.ogg b/mu/resources/pygamezero/sounds/warning.ogg similarity index 100% rename from mu/resources/pygamezero/warning.ogg rename to mu/resources/pygamezero/sounds/warning.ogg