Programming can be hard. It depends on how your brain works. It can be easy too. Just start out simple. Darkbasic allows you to use a few simple commands to create fairly complex results. The following example isn't as simple as you should start out, but it does show that somewhat complex results can come from very little code:

rem grassy matrix
autocam off
set display mode 1024,768,32
sync on
sync
rem make a texture (picture) that kinda looks like grass using drawing commands
darkgreen = rgb(0,32,0)
medgreen = rgb(0,64,0)
lightgreen = rgb(0,128,0)
rem clear the screen to black
cls 0
rem add some dots in the other colors
for n=1 to 20000
mycolor=rnd(2)
rem choose grass colors
select mycolor
case 0 : ink darkgreen,0 : endcase
case 1 : ink medgreen,0 : endcase
case 2 : ink lightgreen,0 : endcase
endselect
rem we place a colored dot at random screen locations between 0 and 256
dot rnd(256),rnd(256)
next n
rem capture what we drew as an image
get image 1,0,0,255,255
sync
rem create a matrix (ground) object
make matrix 1,1000,1000,25,25
rem make the ground a little bumpy
randomize matrix 1,20
rem put the grass on the matrix (ground)
prepare matrix texture 1,1,1,1
rem update all the changes to the ground
update matrix 1
sync
rem change the lighting a bit
color ambient light rgb(32,32,32)
set directional light 0,1,-.3,0
calc_mat_normals(1,25,25,4.0,4.0)
sync
rem rotate camera
position camera 500,50,500
do
turn camera right 1
sync
loop
end
function calc_mat_normals(mat,tilex,tilez,sizex#,sizez#)
Rem By Lee Bamber From DB Example - Adds shaded areas to matrix to give depth
rem added tile and tile size factor for normal depth adjustment - latch
for z=1 to tilez
for x=1 to tilex
rem Get matrix heights
h8#=get matrix height(mat,x,z-1)
h4#=get matrix height(mat,x-1,z)
h#=get matrix height(mat,x,z)
h2#=get matrix height(mat,x,z)
rem Calculate projected angle X using heights
x1#=(x-1)*sizex# : y1#=h#
x2#=(x+0)*sizex# : y2#=h4#
dx#=x2#-x1#
dy#=y2#-y1#
ax#=atanfull(dx#,dy#)
ax#=wrapvalue(90-ax#)
rem Calculate projected angle Z using heights
z1#=(z-1)*sizez# : y1#=h2#
z2#=(z+0)*sizez# : y2#=h8#
dz#=z2#-z1#
dy#=y2#-y1#
az#=atanfull(dz#,dy#)
az#=wrapvalue(90-az#)
rem Make normal from projected angle
nx#=sin(ax#)
ny#=cos(ax#)
nz#=sin(az#)
rem Setting matrix normal for smoothness
set matrix normal mat,x,z,nx#,ny#,nz#
next x
next z
update matrix mat
EndFunction

I don't expect you to understand all or most of that code but you may be able to decipher a couple of things.

Of interest may be how easy it is to create a ground object (matrix)

create matrix 1,1000,1000,25,25
randomize matrix 1,20
update matrix 1

That's an example of how simple it can be just to create a landscape. Now using, texturing, walking on, etc. the landscape is a whole other thing. But DarkBASIC allows you to tackle these problems with relative ease compared to lower level languages like C++ or C.

When you start, read what the individual commands are. You might just try seeing what one or two lines of code can do.

Like

cls rgb(255,0,0)

or

Text 100,100,"I like to eat apples"

or

For n=1 to 5

print "Hello World!"

next n

Enjoy your day.