Hello ! I want to make programs for android. Unfortunately, I've been programming in Basic for 30 years, and it's hard for my brain to switch to object-oriented programming. I don't see and understand at all how they are built on each other, how things can be connected. A week ago, I tried the development system called B4A (https://www.b4x.com), which is in principle written in Basic, but in practice it could be anything due to the lack of simplicity.
I made a program in QB64 in a couple of hours, and then converted it to B4A. I suffered with it for almost 2 days before I rewrote it properly and it finally started.
I have attached APK file. This should be launched on Android and the program will be installed. Pretty much the same as the code here.
In the qb64 version, the mouse behaves like the touchscreen on the phone. The left mouse button simulates touching the touchscreen, and the move button simulates moving the mouse.
fps2_apk.zip (Size: 128.38 KB / Downloads: 53)
https://drive.google.com/file/d/1Un1gAY4...drive_link
I made a program in QB64 in a couple of hours, and then converted it to B4A. I suffered with it for almost 2 days before I rewrote it properly and it finally started.
I have attached APK file. This should be launched on Android and the program will be installed. Pretty much the same as the code here.
In the qb64 version, the mouse behaves like the touchscreen on the phone. The left mouse button simulates touching the touchscreen, and the move button simulates moving the mouse.
fps2_apk.zip (Size: 128.38 KB / Downloads: 53)
Code: (Select All)
'Randomize Timer
Dim Shared map_dat(9)
Dim Shared map(99, 99)
Dim Shared map_p(9999, 9), map_pc
Dim Shared map_s(9999, 4), map_sc
Dim Shared map_l(9999, 9), map_lc
Dim Shared cam(9)
Dim Shared iranyitas(9)
mon = _NewImage(_DesktopWidth, _DesktopHeight, 32): Screen mon: _FullScreen
cam(0) = 10
cam(1) = 10
cam(2) = .7
cam(8) = _Width / 2
cam(9) = _Height / 2
cam(7) = 8 'latohatar
cam(6) = cam(7) * cam(7)
cam(5) = 1 / cam(7)
createtrack 30, 30, .5
create_textsq
Do: _Limit 30
control
cam(3) = iranyitas(0) * .01
' cam(0) = cam(0) + Sin(cam(3)) * (iranyitas(2) - iranyitas(1)) * .06
' cam(1) = cam(1) + Cos(cam(3)) * (iranyitas(2) - iranyitas(1)) * .06
lepes = (iranyitas(2) - iranyitas(1)) * .06
For t1 = 0 To 80
For t2 = 0 To 1
ang = cam(3) + t1 * (t2 * 2 - 1) * (3.1415 / 180)
lepes = (iranyitas(2) - iranyitas(1)) * .06 / 80 * (80 - t1)
x = cam(0) + Sin(ang) * lepes
y = cam(1) + Cos(ang) * lepes
If map(x - .5, y - .5) = 0 Then cam(0) = x: cam(1) = y: GoTo 88
Next t2
Next t1
88:
rot
For t = 0 To map_lc - 1
If map_p(map_l(t, 0), 5) And map_p(map_l(t, 1), 5) Then
x1 = map_p(map_l(t, 0), 3)
y1 = map_p(map_l(t, 0), 4)
x2 = map_p(map_l(t, 1), 3)
y2 = map_p(map_l(t, 1), 4)
temp = 127 * (map_p(map_l(t, 0), 6) + map_p(map_l(t, 1), 6))
Line (x1, y1)-(x2, y2), _RGB32(temp, temp, temp)
End If
Next t
_Display
Cls
Loop
Sub rot '(x, y, z)
For t = 0 To map_pc - 1
x2 = map_p(t, 0) - cam(0)
y2 = map_p(t, 1) - cam(1)
z2 = map_p(t, 2) - cam(2)
rotate_2d x2, y2, cam(3)
map_p(t, 5) = 0
If Abs(y2) < cam(7) Then
If Abs(x2) < cam(7) Then
dis = (x2 * x2 + y2 * y2)
If dis < cam(6) Then
If y2 > 0 Then
temp = 800 / y2
x = x2 * temp
y = z2 * temp
map_p(t, 3) = x + cam(8)
map_p(t, 4) = -y + cam(9)
map_p(t, 5) = 1
map_p(t, 6) = 1 - cam(5) * Sqr(dis)
End If
End If
End If
End If
Next t
End Sub
Sub control
mousex = 0: mousey = 0: mousew = 0: While _MouseInput: mousex = mousex + _MouseMovementX: mousey = mousey + _MouseMovementY: mousew = mousew + _MouseWheel: Wend
iranyitas(2) = iranyitas(1)
If _MouseButton(1) Then
iranyitas(0) = iranyitas(0) + mousex
iranyitas(1) = iranyitas(1) + mousey
End If
End Sub
Sub rotate_2d (x, y, ang): x1 = x * Cos(ang) - y * Sin(ang): y1 = x * Sin(ang) + y * Cos(ang): x = x1: y = y1: End Sub
Function interpolate (a, b, x): interpolate = a + (b - a) * x: End Function
Sub add_sq (a, b, c, d, plan)
map_s(map_sc, 0) = a
map_s(map_sc, 1) = b
map_s(map_sc, 2) = c
map_s(map_sc, 3) = d
map_s(map_sc, 4) = plan
map_sc = map_sc + 1
add_line a, b
add_line a, c
add_line c, d
add_line b, d
End Sub
Sub add_line (a, b)
find = -1
If map_lc > 0 Then
For t = 0 To map_lc - 1
If (map_l(t, 0) = a And map_l(t, 1) = b) Or (map_l(t, 0) = b And map_l(t, 1) = a) Then find = t
Next
End If
If find = -1 Then
map_l(map_lc, 0) = a
map_l(map_lc, 1) = b
map_lc = map_lc + 1
End If
End Sub
Function add_point (x, y, z)
find = -1
If map_pc > 0 Then
For t = 0 To map_pc - 1
If map_p(t, 0) = x And map_p(t, 1) = y And map_p(t, 2) = z Then find = t
Next t
End If
If find = -1 Then
map_p(map_pc, 0) = x
map_p(map_pc, 1) = y
map_p(map_pc, 2) = z
add_point = map_pc
map_pc = map_pc + 1
Else
add_point = find
End If
End Function
Sub createtrack (qx, qy, qf)
map_dat(0) = qx
map_dat(1) = qy
map_dat(2) = qf
Dim d(1)
Dim temp1
For x = 0 To qx - 1: For y = 0 To qy - 1: map(x, y) = 1: Next: Next
d(0) = Int(map_dat(0) / 2): d(1) = Int(map_dat(1) / 2)
temp1 = 0
Do
temp1 = temp1 + map(d(0), d(1))
map(d(0), d(1)) = 0
t = Int(4 * Rnd)
d(t And 1) = d(t And 1) + (t And 2) - 1
If d(0) = 1 Or d(0) = map_dat(0) - 1 Or d(1) = 1 Or d(1) = map_dat(1) - 1 Then d(0) = Int(map_dat(0) / 2): d(1) = Int(map_dat(1) / 2)
If temp1 > qx * qy * qf Then Exit Do
Loop
End Sub
Sub create_textsq
For x = 0 To map_dat(0) - 1
For y = 0 To map_dat(1) - 1
p0 = add_point(x, y, map(x, y))
p1 = add_point(x + 1, y, map(x, y))
p2 = add_point(x, y + 1, map(x, y))
p3 = add_point(x + 1, y + 1, map(x, y))
add_sq p0, p1, p2, p3, 2
If map(x, y) = 0 Then
If map(x - 1, y) = 1 Then
x1 = x
y1 = y
x2 = x
y2 = y + 1
create_textsq2 x1, y1, x2, y2, 0
End If
If map(x + 1, y) = 1 Then
x1 = x + 1
y1 = y
x2 = x + 1
y2 = y + 1
create_textsq2 x1, y1, x2, y2, 0
End If
If map(x, y - 1) = 1 Then
x1 = x
y1 = y
x2 = x + 1
y2 = y
create_textsq2 x1, y1, x2, y2, 0
End If
If map(x, y + 1) = 1 Then
x1 = x
y1 = y + 1
x2 = x + 1
y2 = y + 1
create_textsq2 x1, y1, x2, y2, 0
End If
End If
Next
Next
End Sub
Sub create_textsq2 (x1, y1, x2, y2, plan)
p0 = add_point(x1, y1, 0)
p1 = add_point(x1, y1, 1)
p2 = add_point(x2, y2, 1)
p3 = add_point(x2, y2, 0)
add_sq p0, p1, p3, p2, plan
End Sub
https://drive.google.com/file/d/1Un1gAY4...drive_link