Программирование на smart BASIC. Урок 5
- Mr. Kibernetik
- Site Admin
- Posts: 4786
- Joined: Mon Nov 19, 2012 10:16 pm
- My devices: iPhone, iPad, MacBook
- Location: Russia
- Flag:
Re: Программирование на smart BASIC. Урок 5
Команду OPTION BASE 1 не нужно указывать много раз. Она действует с момента задания и до конца программы.
Re: Программирование на smart BASIC. Урок 5
Спасибо , исправил.Mr. Kibernetik wrote:Команду OPTION BASE 1 не нужно указывать много раз. Она действует с момента задания и до конца программы.
Re: Программирование на smart BASIC. Урок 5
Вот тоже пытаюсь разобраться как пользоваться массивом, тоже хочу лабиринт построить.
Можете показать, вот как бы например вот эта запись, если использовать массив выглядела?
Ну или подсказку пример дать. Не понимаю как вот эти координаты в массив записать.
GRAPHICS
DRAW RECT 0,0 to 100,100
DRAW RECT 0,100 to 100,200
DRAW RECT 0,200 to 100,300
DRAW RECT 100,0 to 200,100
DRAW RECT 100,100 to 200,200
DRAW RECT 100,200 to 200,300
DRAW RECT 200,0 to 300,100
DRAW RECT 200,100 to 300,200
DRAW RECT 200,200 to 300,300
Можете показать, вот как бы например вот эта запись, если использовать массив выглядела?
Ну или подсказку пример дать. Не понимаю как вот эти координаты в массив записать.
GRAPHICS
DRAW RECT 0,0 to 100,100
DRAW RECT 0,100 to 100,200
DRAW RECT 0,200 to 100,300
DRAW RECT 100,0 to 200,100
DRAW RECT 100,100 to 200,200
DRAW RECT 100,200 to 200,300
DRAW RECT 200,0 to 300,100
DRAW RECT 200,100 to 300,200
DRAW RECT 200,200 to 300,300
- Mr. Kibernetik
- Site Admin
- Posts: 4786
- Joined: Mon Nov 19, 2012 10:16 pm
- My devices: iPhone, iPad, MacBook
- Location: Russia
- Flag:
Re: Программирование на smart BASIC. Урок 5
Alexxl wrote:Вот тоже пытаюсь разобраться как пользоваться массивом, тоже хочу лабиринт построить.
Можете показать, вот как бы например вот эта запись, если использовать массив выглядела?
Ну или подсказку пример дать. Не понимаю как вот эти координаты в массив записать.
GRAPHICS
DRAW RECT 0,0 to 100,100
DRAW RECT 0,100 to 100,200
DRAW RECT 0,200 to 100,300
Code: Select all
'определим массивы
DIM x1(3),y1(3),x2(3),y2(3)
'данные
DATA 0,0,100,100
DATA 0,100,100,200
DATA 0,200,100,300
'считаем данные в массивы
FOR i=0 TO 2
READ x1(i),y1(i),x2(i),y2(i)
NEXT i
'выполним рисование в цикле
GRAPHICS
FOR i=0 to 2
DRAW RECT x1(i),y1(i) to x2(i),y2(i)
NEXT i
- Фант
- Posts: 1363
- Joined: Sat Nov 30, 2013 10:01 am
- My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
- Location: Россия,Санкт-Петербург
- Flag:
- Contact:
Re: Программирование на smart BASIC. Урок 5
Можно и без массива...
Координаты стенок(квадратов) вбивайте в DATA и считывайте командой READ . N-количество квадратов.
Координаты стенок(квадратов) вбивайте в DATA и считывайте командой READ . N-количество квадратов.
Code: Select all
OPTION IMAGE POS CENTRAL
Graphics
N=4
Data 50,50,200,50, 350,50, 500,50
For i=1 to n
Read a,b
Fill rect a,b size 30
Next i
Re: Программирование на smart BASIC. Урок 5
Спасибо. Буду теперь осмысливать.
Re: Программирование на smart BASIC. Урок 5
Вот , только стен не видит...
Code: Select all
'r'
''
graphics
SET TOOLBAR OFF
a1=screen_width() 'ширина экрана
a2=screen_height() 'высота экрана
if a2<a1 then
a3=a2
end if
if a1<a2 then
a3=a1
end if
GRAPHICS CLEAR 170/255,165/255,145/255
OPTION BASE (1)
d123=15
'r'
''
'лабиринт
m=0
i1=1
do
dim r(14)
data 1,1,1,1,1,1,1,1,1,1,1,1,1,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,0 TO ((a3/d123)+m),(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,0 TO ((a3/d123)+m),(a3/d123)
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,0,1,0,1,1,0,1,0,0,0,1,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123) TO ((a3/d123)+m),2*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123) TO ((a3/d123)+m),(a3/d123)*2
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,1,1,0,0,0,0,1,0,1,0,0,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*2 TO ((a3/d123)+m),3*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*2 TO ((a3/d123)+m),(a3/d123)*3
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,0,0,1,0,1,0,1,0,1,1,1,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*3 TO ((a3/d123)+m),4*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*3 TO ((a3/d123)+m),(a3/d123)*4
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,1,0,0,0,1,0,0,0,1,0,0,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*4 TO ((a3/d123)+m),5*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*4 TO ((a3/d123)+m),(a3/d123)*5
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,0,1,0,1,1,1,1,0,1,0,1,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*5 TO ((a3/d123)+m),6*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*5 TO ((a3/d123)+m),(a3/d123)*6
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,1,1,0,1,1,0,0,1,0,1,1,1,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*6 TO ((a3/d123)+m),7*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*6 TO ((a3/d123)+m),(a3/d123)*7
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,0,0,0,1,1,0,0,0,1,0,0,1,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*7 TO ((a3/d123)+m),8*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*7 TO ((a3/d123)+m),(a3/d123)*8
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,1,1,1,0,0,0,1,1,1,1,0,1,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*8 TO ((a3/d123)+m),9*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*8 TO ((a3/d123)+m),(a3/d123)*9
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,1,0,0,0,1,0,0,1,0,1,0,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*9 TO ((a3/d123)+m),10*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*9 TO ((a3/d123)+m),(a3/d123)*10
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,1,0,1,0,1,0,1,1,0,1,1,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*10 TO ((a3/d123)+m),11*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*10 TO ((a3/d123)+m),(a3/d123)*11
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,0,0,1,0,0,0,1,1,0,0,0,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*11 TO ((a3/d123)+m),12*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*11 TO ((a3/d123)+m),(a3/d123)*12
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,1,1,1,0,1,0,0,1,1,0,1,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*12 TO ((a3/d123)+m),13*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*12 TO ((a3/d123)+m),(a3/d123)*13
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,0,0,0,0,1,1,0,0,0,0,1,0,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*13 TO ((a3/d123)+m),14*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*13 TO ((a3/d123)+m),(a3/d123)*14
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
m=0
i1=1
do
dim r(14)
data 1,0,1,1,1,1,1,1,1,1,1,1,1,1,1
for i=1 to 14
read r(i)
if r(i)=1 then
FILL COLOR 50/255,40/255,25/255
fill RECT m,(a3/d123)*14 TO ((a3/d123)+m),15*(a3/d123)
end if
if r(i)=0 then
fill color 250/255,240/255,235/255
fill rect m,(a3/d123)*14 TO ((a3/d123)+m),(a3/d123)*15
end if
i1=i1+1
m=m+(a3/d123)
until i1>2
next i
'r'
''
'игрок
'оброз
OPTION ANGLE DEGREES
sprite 1 begin (a3/d123),(a3/d123)
FILL COLOR 0,100/255,0
shadow on
FILL CIRCLE ((a3/d123)/2),((a3/d123)/2) size ((a3/d123)/2)
draw text "я" at ((a3/d123)/2),((a3/d123)/2)
sprite end
q1=(a3/d123)
q2=((a3/d123)*14)
SPRITE 1 AT q1,q2
SPRITE 1 SHOW
'джостик
if a2<a1 then
'справа
DRAW COLOR 0,0,0
DRAW SIZE 10
DRAW CIRCLE a1-4*(a3/d123),a2-4*(a3/d123) TO a1,a2
draw circle a1-2*(a3/d123),a2-2*(a3/d123) size (a3/d123)*2/3
BUTTON "d1" TEXT "выход" AT (a1-4*(a3/d123)),0 SIZE (a3/d123)*3,(a3/d123)*2
endif
if a2>a1 then
'снизу
DRAW COLOR 0,0,0
DRAW SIZE 10
DRAW CIRCLE a1-4*(a3/d123),a2-4*(a3/d123) to a1,a2
draw circle a1-2*(a3/d123),a2-2*(a3/d123) size (a3/d123)*2/3
BUTTON "d1" TEXT "выход" AT 3/2*(a3/d123),(a2-2*(a3/d123)) SIZE (a3/d123)*3,(a3/d123)*2
endif
'ход
q3=q1
q4=q2
loop:
Do
if BUTTON_PRESSED ("d1") then
SET TOOLBAR ON
endif
t1=x
t2=y
get touch 0 as x,y
UNTIL x>t1 or x<t1 or y>t2 or y<t2
if x>(a1-5/2*(a3/d123)) and x<(a1-3/2*(a3/d123)) and y<(a2-5/2*(a3/d123)) then
sprite 1 at q3,(q4-(a3/d123))
endif
if x>(a1-5/2*(a3/d123)) and x<(a1-3/2*(a3/d123)) and y>(a2-5/2*(a3/d123)) then
sprite 1 at q3,(q4+(a3/d123))
endif
if x<(a1-5/2*(a3/d123)) and y>(a2-5/2*(a3/d123)) and y<(a2-3/2*(a3/d123)) then
sprite 1 at (q3-(a3/d123)),q4
endif
if x>(a1-5/2*(a3/d123)) and y>(a2-5/2*(a3/d123)) and y<(a2-3/2*(a3/d123)) then
sprite 1 at (q3+(a3/d123)),q4
endif
pause .2
GET SPRITE 1 POS q3,q4
goto loop
Re: Программирование на smart BASIC. Урок 5
Хочу для игры сделать программу , где нужен рандом , но в команде проблема : очень часто появляются нули , где ошибка:
Code: Select all
RANDOMIZE
dim a(21)
k=rnd(21)
a(k)=k
k=rnd(21)
q1=a(k)
k=rnd(21)
q2=a(k)
k=rnd(21)
q3=a(k)
k=rnd(21)
q4=a(k)
k=rnd(21)
q5=a(k)
k=rnd(21)
q6=a(k)
k=rnd(21)
q7=a(k)
k=rnd(21)
q8=a(k)
k=rnd(21)
q9=a(k)
k=rnd(21)
q10=a(k)
print "числа " &q1 & "," & q2 & "," & q3 & "," & q4 & "," & q5 & "," & q6 & "," & q7 & "," & q8 & "," & q9 & "," & q10
print " среднее орефметическое " & (q1+q2+q3+q4+q5+q6+q7+q8+q9+q10)/10