Программирование на smart BASIC. Урок 4

Solkh
Posts: 4
Joined: Wed Oct 08, 2014 8:31 am
My devices: iPhone & iPad

Re: Программирование на smart BASIC. Урок 4

Post by Solkh »

У меня тоже получилось вот программа

Code: Select all

DEF xLINE()
   maxx = SCREEN_WIDTH()
   maxy = SCREEN_HEIGHT()
   x1 = RND(maxx)
   x2 = RND(maxx)
   y1 = RND(maxy)
   y2 = RND(maxy)
   DRAW COLOR RND(1),RND(1),RND(1)
   DRAW SIZE RND(8)
   DRAW LINE x1,y1 TO x2,y2
END DEF

DEF yCIRCLE()
   maxx = SCREEN_WIDTH()
   maxy = SCREEN_HEIGHT()
   x = RND(maxx)
   y = RND(maxy)
   r = RND(50)
   FILL COLOR RND(1),RND(1),RND(1)
   FILL CIRCLE x,y SIZE r
END DEF

GRAPHICS
GRAPHICS CLEAR
SHADOW ON
RANDOMIZE
GET ORIENTATION P

IF P = 1 OR 3 THEN
   GOTO LINES
ELSE
   GOTO CIRCLES
END IF

LINES:
xLINE()
IF xLINE.maxx <> SCREEN_WIDTH() THEN
   GOTO CIRCLES
ELSE
   GOTO LINES
END IF

CIRCLES:
yCIRCLE()
IF yCIRCLE.maxx <> SCREEN_WIDTH() THEN
   GOTO LINES
ELSE
   GOTO CIRCLES
END IF

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Программирование на smart BASIC. Урок 4

Post by Фант »

Solkh wrote:У меня тоже получилось вот программа

Code: Select all

DEF xLINE()
   maxx = SCREEN_WIDTH()
   maxy = SCREEN_HEIGHT()
   x1 = RND(maxx)
   x2 = RND(maxx)
   y1 = RND(maxy)
   y2 = RND(maxy)
   DRAW COLOR RND(1),RND(1),RND(1)
   DRAW SIZE RND(8)
   DRAW LINE x1,y1 TO x2,y2
END DEF

DEF yCIRCLE()
   maxx = SCREEN_WIDTH()
   maxy = SCREEN_HEIGHT()
   x = RND(maxx)
   y = RND(maxy)
   r = RND(50)
   FILL COLOR RND(1),RND(1),RND(1)
   FILL CIRCLE x,y SIZE r
END DEF

GRAPHICS
GRAPHICS CLEAR
SHADOW ON
RANDOMIZE
GET ORIENTATION P

IF P = 1 OR 3 THEN
   GOTO LINES
ELSE
   GOTO CIRCLES
END IF

LINES:
xLINE()
IF xLINE.maxx <> SCREEN_WIDTH() THEN
   GOTO CIRCLES
ELSE
   GOTO LINES
END IF

CIRCLES:
yCIRCLE()
IF yCIRCLE.maxx <> SCREEN_WIDTH() THEN
   GOTO LINES
ELSE
   GOTO CIRCLES
END IF
Все работает не плохо. Не хватает полной очистки экрана после смены ориентации экрана :!:

Solkh
Posts: 4
Joined: Wed Oct 08, 2014 8:31 am
My devices: iPhone & iPad

Re: Программирование на smart BASIC. Урок 4

Post by Solkh »

Фант wrote:
Все работает не плохо. Не хватает полной очистки экрана после смены ориентации экрана :!:
Это да, но я так вначале и задумывал без очистки :) . И еще только заметил не работает начальная ориентация т.е. как ни поверни сначала всегда рисуются линии, а потом меняются круги с линиями наоборот. Вот не пойму почему не работает условие?

Code: Select all

GET ORIENTATION P

IF P = 1 OR 3 THEN
   GOTO LINES
ELSE
   GOTO CIRCLES
END IF

Solkh
Posts: 4
Joined: Wed Oct 08, 2014 8:31 am
My devices: iPhone & iPad

Re: Программирование на smart BASIC. Урок 4

Post by Solkh »

Solkh wrote:
Фант wrote:
Все работает не плохо. Не хватает полной очистки экрана после смены ориентации экрана :!:
Это да, но я так вначале и задумывал без очистки :) . И еще только заметил не работает начальная ориентация т.е. как ни поверни сначала всегда рисуются линии, а потом меняются круги с линиями наоборот. Вот не пойму почему не работает условие?

Code: Select all

GET ORIENTATION P

IF P = 1 OR 3 THEN
   GOTO LINES
ELSE
   GOTO CIRCLES
END IF
Все понял ошибка в условии надо было так

Code: Select all

IF P = 1 OR P = 3 THEN

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Программирование на smart BASIC. Урок 4

Post by Mr. Kibernetik »

Код:

Code: Select all

IF P = 1 OR P = 3 THEN
   GOTO LINES
ELSE
   GOTO CIRCLES
END IF
можно записать в одну строку как:

Code: Select all

IF P = 1 OR P = 3 THEN GOTO LINES ELSE GOTO CIRCLES
потому что после THEN и ELSE стоит всего по одной команде.

Или еще короче:

Code: Select all

IF P = 1 OR P = 3 THEN LINES ELSE CIRCLES
Многострочный
IF THEN
ELSE
ENDIF
можно использовать, если команд стоит несколько.

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Программирование на smart BASIC. Урок 4

Post by Dionis »

Здесь нет конструкции ELSE IF ? Шокирован :shock:

dimonnn777
Posts: 17
Joined: Tue Jan 13, 2015 10:44 am

Re: Программирование на smart BASIC. Урок 4

Post by dimonnn777 »

Мой вариант

Code: Select all

def F
maxx = screen_width()
maxy = screen_height()
c=0.99 'цвет
s=50 'толщина
c1=RND (c)
c2=RND (c)
c3=RND (c)
s1=RND (s)
x=RND (maxx)
y=RND (maxy)
r=(RND (maxy)+RND (maxy))/7
DRAW color c1,c2,c3 
DRAW SIZE s1
DRAW ARC x,y,r,-360,0,0
end def 

def P
maxx = screen_width()
maxy = screen_height()
c=0.99 'цвет
s=50 'толщина
c1=RND (c)
c2=RND (c)
c3=RND (c)
s1=RND (s)
x1=RND (maxx)
y1=RND (maxy)
x2=RND (maxx)
y2=RND (maxy)
r=(RND (maxy)+RND (maxy))/7
DRAW color c1,c2,c3 
DRAW SIZE s1
DRAW LINE X1,Y1 TO X2,Y2
end def 
GRAPHICS
option angle degrees
loop:
maxx = screen_width()
maxy = screen_height()
if maxx>maxy then F else P
pause 0.1
goto loop


User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Программирование на smart BASIC. Урок 4

Post by Mr. Kibernetik »

dimonnn777 wrote:Мой вариант

Code: Select all

def F
maxx = screen_width()
maxy = screen_height()
c=0.99 'цвет
s=50 'толщина
c1=RND (c)
c2=RND (c)
c3=RND (c)
s1=RND (s)
x=RND (maxx)
y=RND (maxy)
r=(RND (maxy)+RND (maxy))/7
DRAW color c1,c2,c3 
DRAW SIZE s1
DRAW ARC x,y,r,-360,0,0
end def 

def P
maxx = screen_width()
maxy = screen_height()
c=0.99 'цвет
s=50 'толщина
c1=RND (c)
c2=RND (c)
c3=RND (c)
s1=RND (s)
x1=RND (maxx)
y1=RND (maxy)
x2=RND (maxx)
y2=RND (maxy)
r=(RND (maxy)+RND (maxy))/7
DRAW color c1,c2,c3 
DRAW SIZE s1
DRAW LINE X1,Y1 TO X2,Y2
end def 
GRAPHICS
option angle degrees
loop:
maxx = screen_width()
maxy = screen_height()
if maxx>maxy then F else P
pause 0.1
goto loop

А почему цвет C=0.99, а не 1?

dimonnn777
Posts: 17
Joined: Tue Jan 13, 2015 10:44 am

Re: Программирование на smart BASIC. Урок 4

Post by dimonnn777 »

Почемуто думал что дробные не будет выдавать, а так действительно надо 1

Alexxl
Posts: 26
Joined: Fri Jan 30, 2015 9:54 am
My devices: iPad 2 iPhone 5

Re: Программирование на smart BASIC. Урок 4

Post by Alexxl »

Мой вариант 8-)


100
A = rnd(1000)
B = rnd(1000)

GRAPHICS
DRAW SIZE rnd(15)
DRAW COLOR A/255,B/255,A-B/255

IF SCREEN_WIDTH() < SCREEN_HEIGHT() THEN
DRAW LINE TO A,B
ELSE
DRAW CIRCLE B,A SIZE rnd(100)
END IF

PAUSE 0.2
GOTO 100

Post Reply