Code archives/Miscellaneous/Simple interactive tutorial using scripts
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
From article: Scripts (rus) | |||||
;Simple interactive tutorial using scripts - learning controls of simple model viewer - by Matt Merkulov Graphics3D 640, 480 cam = CreateCamera() PositionEntity cam, 0, 0, -3 RotateEntity CreateLight(), 45, 0, 45 ; The address, number and detail level of a figure Global m, et = 1, det = 10 ; Color of a figure Global cr = 255, cg = 255, cb = 255 ; Creating figure recreate CameraProject cam, 0, 0, 0 ; Calculation of an increment on axises X and Y d# = ProjectedX() CameraProject cam, 1, 0, 0 d# = 1.0 / (ProjectedX() - d#) esc# = 1.0 ; Loading lesson script in memory Dim cmd$(18, 1) For n = 0 To 17 Read cmd$(n, 0), cmd$(n, 1) Next SetFont LoadFont("Arial Cyr", 14) SetBuffer BackBuffer() Repeat ; Calculation of increments of values for the mouse dx# = MouseX() -odx# dy# = ody# - MouseY() dmz = MouseZ() -mz event = 0 If MouseDown(1) Then ; Moving a figure(event 1) ex# = ex# + d# * dx# ey# = ey# + d# * dy# event = 1 ElseIf MouseDown(2) Then ; Rotating of a figure(event 2) exang# = exang# + dx# eyang# = eyang# + dy# event = 2 ElseIf MouseDown(3) Then ; Scaling a figure(event ¹3) esc# = esc# * 1.01 ^ dy# event = 3 ElseIf dmz <> 0 Then If det + dmz > 2 And det + dmz < 20 Then ; Change of detail level (event 6) det = det + dmz recreate event = 6 End If mz = MouseZ() Else mb = 0 End If odx# = MouseX() ody# = MouseY() ; Processing pressed keys i = GetKey() If i >= 49 And i <= 52 Then ; Changing a type of a figure(event 4) et = i - 48 recreate If et = 2 Then event = 4 End If If i = 48 Then ; Changing color of a figure (event 5) cr = Rand(0, 255) cg = Rand(0, 255) cb = Rand(0, 255) EntityColor m, cr, cg, cb event = 5 End If PositionEntity m, ex#, ey#, 0 RotateEntity m, eyang#, exang#, 0 ScaleEntity m, esc#, esc#, esc# ; Processing commands Select cmd$(cn, 0) Case"TEXT" ; A conclusion of the text(only at inactivity) If event = 0 Then txt$ = cmd$(cn, 1) cn = cn + 1 End If Case"WAITFOR" ; Expectation of event If event = cmd$(cn, 1) Then cn = cn + 1 Case"WAITKEY" ; Expectation of pressing of space key If i = 32 Then cn = cn + 1 End Select RenderWorld Text 0, 0, txt$ Flip Until KeyHit(1) Function recreate() ; Creating figure If m <> 0 Then FreeEntity m Select et Case 1:m = CreateCube() Case 2:m = CreateSphere(det) Case 3:m = CreateCylinder(det) Case 4:m = CreateCone(det) End Select EntityColor m, cr, cg, cb End Function Data "TEXT", "It is the program intended for viewing three - dimensional objects. Press space." Data "WAITKEY", "" Data "TEXT", "This lesson will help you to master it." Data "WAITKEY", "" Data "TEXT", "Having pressed left button of the mouse, you can move object. Try." Data "WAITFOR", "1" Data "TEXT", "With the right button, it is possible to rotate object. Turn object." Data "WAITFOR", "2" Data "TEXT", "Middle button - for scaling of object. Change the size of object." Data "WAITFOR", "3" Data "TEXT", "Digital keys 1 - 4 - selection of object. For proceeding, choose sphere(2)." Data "WAITFOR", "4" Data "TEXT", "You can change color of object with '0' key. Change Color To continue." Data "WAITFOR", "5" Data "TEXT", "Change detail level of object by rotating mouse wheel." Data "WAITFOR", "6" Data "TEXT", "That's all, the lesson is ended." Data "WAITKEY", "" |
Comments
None.
Code Archives Forum