Skip to content

Commit 3348a51

Browse files
committed
Обновлены примеры
1 parent 2d7feeb commit 3348a51

File tree

10 files changed

+219
-5
lines changed

10 files changed

+219
-5
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
use "canvas"
2+
use "std"
3+
4+
w = 800 h = 600
5+
window("Animate line with thread", w, h)
6+
7+
// Крайние точки линии
8+
x1 = rand(w) y1 = rand(h)
9+
x2 = rand(w) y2 = rand(h)
10+
11+
// Направление движения
12+
d1x = rand() d1y = -rand()
13+
d2x = rand() d2y = rand()
14+
15+
// Очищаем экран
16+
color(rand(#FFFFFF))
17+
frect(0,0,w,h)
18+
19+
run = 1
20+
thread("changehue")
21+
22+
def changehue() {
23+
hue = 0
24+
while run {
25+
hue = hue + 0.0001
26+
if (hue >= 1) hue = 0
27+
qr = hue * 6 // временно для расчёта
28+
hueindex = (qr - qr % 1) % 6
29+
f = qr - (qr - qr % 1)
30+
31+
if hueindex == 0 color(255, f*255, 0)
32+
else if hueindex == 1 color(255 - f*255, 255, 0)
33+
else if hueindex == 2 color(0, 255, f*255)
34+
else if hueindex == 3 color(0, 255-f*255, 255)
35+
else if hueindex == 4 color(f*255, 0, 255)
36+
else if hueindex == 5 color(255, 0, 255-f*255)
37+
sleep(5)
38+
}
39+
}
40+
41+
while run {
42+
if checkhoriz(x1) d1x = -d1x
43+
if checkhoriz(x2) d2x = -d2x
44+
if checkvert(y1) d1y = -d1y
45+
if checkvert(y2) d2y = -d2y
46+
47+
x1 = x1 + d1x x2 = x2 + d2x
48+
y1 = y1 + d1y y2 = y2 + d2y
49+
50+
line(x1, y1, x2, y2)
51+
repaint()
52+
sleep(10)
53+
if keypressed() == VK_ESCAPE run = 0
54+
}
55+
56+
def checkhoriz(px) return (px >= w || px < 0)
57+
def checkvert(py) return (py >= h || py < 0)

examples/common/array.own

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
arr1 = [1, 2, 3, 4, 5]
2+
println arr1[0]
3+
println arr1
4+
5+
use "std"
6+
arr2 = newarray(5)
7+
arr2[2] = 9
8+
arr2 = arr2 :: 4
9+
println arr2
10+
11+
arr3 = arr1 :: arr2
12+
arr4 = arr1 << arr2
13+
println arr3
14+
println arr4
15+
16+
17+
// Array 2d
18+
arr5 = newarray(4, 4)
19+
println arr5
20+
arr5[1] = arr1
21+
println arr5
22+
23+
arr6 = [arr5[1], arr5[2]]
24+
println arr6
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
use "std"
2+
3+
println "Destructuring assignment"
4+
arr = ["a", "b", "c"]
5+
extract(var1, var2, var3) = arr
6+
echo(var1, var2, var3)
7+
8+
// Swap
9+
println "Swap variables"
10+
echo(var1, var2)
11+
extract(var2, var1) = [var1, var2]
12+
echo(var1, var2)

examples/common/loops.own

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// While loop
2+
println "While loop"
3+
a = 0
4+
while a < 3 {
5+
print a
6+
a++
7+
}
8+
9+
10+
// Do-while loop
11+
println "\n\nDo-while loop"
12+
a = 0
13+
do {
14+
print a
15+
a++
16+
} while (a < 3)
17+
18+
19+
// For loop
20+
println "\n\nFor loop"
21+
for a = 0, a < 10, a++
22+
print a
23+
24+
25+
// Foreach loop
26+
println "\n\nForeach loop on array"
27+
arr = [1, 2, 3, 4, 5]
28+
for a : arr
29+
print a
30+
31+
use "std"
32+
println "\n\nForeach loop on map"
33+
object = {"key1": "value1", "key2": 100, "arr": [0, 1]}
34+
for key, value : object
35+
echo(key, ":", value)
36+
37+
38+
use "functional"
39+
40+
// Functional loop
41+
println "\n\nFunctional loop on array"
42+
foreach(arr, ::echo)
43+
foreach(arr, def(v) {
44+
print v
45+
})
46+
47+
println "\n\nfunctional loop on map"
48+
foreach(object, ::echo)
49+
foreach(object, def(k, v) {
50+
print " " + k + " : " + v
51+
})
52+
println ""

examples/common/map.own

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
map1 = {"key": "value"}
2+
println map1["key"]
3+
println map1.key
4+
5+
map1["newkey"] = "newvalue"
6+
map1[0] = "zero"
7+
x = 400
8+
map1[x] = [1, 2, 3]
9+
println map1

examples/common/operators.own

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use "std"
22

3+
// Ternary operator
34
a = 0
45
b = 1
5-
66
print (a ? "text1" : "text2") + "\n"
7-
print (b ? "text3" : "text4") + "\n"
7+
print (b ? "text3" : "text4") + "\n"

examples/common/pattern_matching.own

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
use "std"
2+
use "types"
3+
4+
v = rand(10)
5+
println match v {
6+
case 0: "Zero"
7+
case 1: "One"
8+
case x if x <= 5: "Two..five"
9+
case _: "Six..nine"
10+
}
11+
12+
def match1(v) = match v {
13+
case 1: "One"
14+
case "Two": 2
15+
case x if typeof(x) == NUMBER: "Number"
16+
case x if typeof(x) == STRING: "String"
17+
case _: "other"
18+
}
19+
20+
println match1(1)
21+
println match1(322)
22+
println match1("test")
23+
println match1("Two")
24+
println match1([2])
25+
26+
// Recursive factorial
27+
println factorial(6)
28+
def factorial(n) = match n {
29+
case 0: 1
30+
case _: n * factorial(n - 1)
31+
}
32+
33+
// Pattern matching on arrays
34+
println printArrayRecursive([1, 2, 3, 4, 5, 6, 7])
35+
def printArrayRecursive(arr) = match arr {
36+
case [head :: tail]: "[" + head + ", " + printArrayRecursive(tail) + "]"
37+
case []: "[]"
38+
case last: "[" + last + ", []]"
39+
}

examples/common/thread.own

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use "std"
2+
3+
def thread1() {
4+
i = 0
5+
while (i < 100) {
6+
print "i = " + i + "\n"
7+
i = i + 1
8+
sleep(100)
9+
}
10+
}
11+
12+
// thread("thread1")
13+
thread(::thread1)
14+
15+
k = 0
16+
while (k < 10) {
17+
print "k = " + k + "\n"
18+
k = k + 1
19+
sleep(1000)
20+
}
21+

examples/functions/factorial.own

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Вычисляем факториал
1+
// Factorial
22
def factorial(n) {
33
if n == 1 return 1
44
return n * factorial(n-1)
@@ -22,7 +22,7 @@ for i = 0, i < 10, i++
2222
print "\n"
2323

2424

25-
// Вычисляем факториал с помощью хвостовой рекурсии
25+
// Tail recursive factorial
2626
def factorial_tailrec(n) {
2727
def fact(acc, n) {
2828
if n == 0 return acc

examples/game/agar.own

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ while run {
6666
color(playerColor)
6767
circle(w2, h2, playerSize)
6868
color(0)
69-
drawstring(playerSize, w2-10, h2+4)
69+
drawstring(playerSize, w2-7, h2+4)
7070

7171
repaint()
7272
sleep(20)

0 commit comments

Comments
 (0)