Best way to learn?

The place for codemasters or beginners to talk about programming any language for the Spectrum.
Post Reply
OldGamer
Drutt
Posts: 34
Joined: Mon Jun 10, 2019 1:45 am

Best way to learn?

Post by OldGamer »

Good evening all, I recently got back into using the ZX Spectrum after picking one up in a local charity shop and I'm now finding myself wanted to do more than play classic games. I would like to learn to program the Spectrum and perhaps one day many months down the line, create my own simple game.

My question is this, how you you recommend I learn to program? bearing in mind I have no previous programming knowledge? is there perhaps a good book I should buy or a certain tool I should buy or download?

Thank you all for your help!
User avatar
djnzx48
Manic Miner
Posts: 729
Joined: Wed Dec 06, 2017 2:13 am
Location: New Zealand

Re: Best way to learn?

Post by djnzx48 »

I think the original BASIC manual is still the best for learning to program. There are a lot of great articles and type-ins from magazines like Sinclair User and Sinclair Programs that could maybe help.

(Also, for some reason the links to the .zips on the website don't seem to lead anywhere?)
User avatar
PeterJ
Site Admin
Posts: 6854
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: Best way to learn?

Post by PeterJ »

djnzx48 wrote: Mon Jun 10, 2019 5:19 am
(Also, for some reason the links to the .zips on the website don't seem to lead anywhere?)
I'm away from my PC for the next few days, but I believe these come from archive.org. I will see when I'm back in the back.

In the meantime, this should work:

http://zxnext.narod.ru/manuals/Basic_Programming.pdf
Ralf
Rick Dangerous
Posts: 2279
Joined: Mon Nov 13, 2017 11:59 am
Location: Poland

Re: Best way to learn?

Post by Ralf »

I think the original BASIC manual is still the best for learning to program.
I agree. But before that definitely read Zx Spectrum User Guide if you haven't yet:
https://www.manualslib.com/manual/11713 ... mPlus.html

There are quite a lot of short example programs. Try typing them and running. Zx Spectrum Basic
has this extra challenge for beginners that you don't type commands letter by letter but you get a command
typed by pressing a single key. And to get the proper command you need to set a proper "mode" earlier.
So typing the programs in won't be a dumb experience as it will help you to memorize the commands.

Then you may try to change a value or two in the example programs and see what happens. Change some colours,
experiment, generally have fun :)

Don't be afraid of programming, 10 years old boys were able to get it, you'll be able to get it too :)
OldGamer
Drutt
Posts: 34
Joined: Mon Jun 10, 2019 1:45 am

Re: Best way to learn?

Post by OldGamer »

Thank you
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2640
Joined: Mon Nov 13, 2017 3:16 pm

Re: Best way to learn?

Post by Ast A. Moore »

If you are serious about getting into programming, you should learn about the Spectrum’s architecture, rather than try and pick up “programming” per se. BASIC and assembly are pretty easy to learn, but in and of themselves, they are just tools that enable you to implement your ideas.

Skim through this. It may be way over your head, but as you learn more, it’ll prove to be a valuable resource in the long run.

There are quite a few threads on this forum dedicated to programming. Peruse them and see if you can pick up bits and pieces. Gradually, you’ll get a fuller picture of what the Spectrum looks like from a programmer’s perspective. And, of course, feel free to ask questions.

The best way to learn programming is to begin programming. A great many of Spectrum coders are self-taught.
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
Ralf
Rick Dangerous
Posts: 2279
Joined: Mon Nov 13, 2017 11:59 am
Location: Poland

Re: Best way to learn?

Post by Ralf »

If you are serious about getting into programming, you should learn about the Spectrum’s architecture...
True, but in a longer timescale.

If I understand correctly, OldGamer is completely new to programming. He needs to learn about variables, loops, ifs, jumps etc.

So at this moment I would focus 100% on Basic and leave trying to understand assembler for later. Much later.
OldGamer
Drutt
Posts: 34
Joined: Mon Jun 10, 2019 1:45 am

Re: Best way to learn?

Post by OldGamer »

Yes, assembler is a complete and total no right now as I'm sure that would be so very complex and I'd probably rage quit haha
So I think yes start simple and I'll read up on the basic language. Although doing some spectrum searches today and I found something called game designer by Quicksilva, that might be worth a look.
User avatar
Turtle_Quality
Manic Miner
Posts: 502
Joined: Fri Dec 07, 2018 10:19 pm

Re: Best way to learn?

Post by Turtle_Quality »

In terms of basic I found the easiest way to get started was to take a very basic basic program and start to add things bit by bit - like take a breakout game and add a high score, then a high score table, find a nice way to show it between games, then make something happen in game to indicate when you overtake a high score etc...

Similarly I found a short basic blackjack game that just gave the player and the computer random cards, let you stick or twist and it was game finished after each hand. Then I added an array called C (a table of 52 numbers using DIM C(52) ) for a pack of cards, worked out a way to shuffle the cards, extra players each with a pot of cash and make the game end when someone is bankrupt.

As for using a game designer, if you can use an emulator then AGD would be far better than Quicksilva's same designer, it can then help you create a tape to load on your Spectrum when you want to try it on the real thing. But personally I think it's better to try some basic programming before using a game designer, they kind of take over the work on your behalf so you're not really learning to program when you go that route.
Definition of loop : see loop
OldGamer
Drutt
Posts: 34
Joined: Mon Jun 10, 2019 1:45 am

Re: Best way to learn?

Post by OldGamer »

Turtle_Quality wrote: Mon Jun 10, 2019 2:06 pm In terms of basic I found the easiest way to get started was to take a very basic basic program and start to add things bit by bit - like take a breakout game and add a high score, then a high score table, find a nice way to show it between games, then make something happen in game to indicate when you overtake a high score etc...

Similarly I found a short basic blackjack game that just gave the player and the computer random cards, let you stick or twist and it was game finished after each hand. Then I added an array called C (a table of 52 numbers using DIM C(52) ) for a pack of cards, worked out a way to shuffle the cards, extra players each with a pot of cash and make the game end when someone is bankrupt.

As for using a game designer, if you can use an emulator then AGD would be far better than Quicksilva's same designer, it can then help you create a tape to load on your Spectrum when you want to try it on the real thing. But personally I think it's better to try some basic programming before using a game designer, they kind of take over the work on your behalf so you're not really learning to program when you go that route.
Thank you, that's very helpful indeed!
User avatar
Alessandro
Dynamite Dan
Posts: 1908
Joined: Wed Nov 15, 2017 11:10 am
Location: Messina, Italy
Contact:

Re: Best way to learn?

Post by Alessandro »

Hi [mention]OldGamer[/mention],

welcome to the forum :D You might want to take a look at this other recent thread, there is some information and advice that you could find useful.
OldGamer
Drutt
Posts: 34
Joined: Mon Jun 10, 2019 1:45 am

Re: Best way to learn?

Post by OldGamer »

Thank you!
User avatar
Morkin
Bugaboo
Posts: 3251
Joined: Mon Nov 13, 2017 8:50 am
Location: Bristol, UK

Re: Best way to learn?

Post by Morkin »

OldGamer wrote: Mon Jun 10, 2019 1:04 pm Yes, assembler is a complete and total no right now as I'm sure that would be so very complex and I'd probably rage quit haha
So I think yes start simple and I'll read up on the basic language. Although doing some spectrum searches today and I found something called game designer by Quicksilva, that might be worth a look.
...I doubt anyone who codes assembly on here can honestly say they haven't rage quit their code at some point.. :lol:

When I decided to try assembly (eventually - after about 20 years :oops:) I found it a bit of a learning curve just because it's very different from BASIC, but it's doable even for a non-programmer and once you get over the hump it's quite addictive. And of course it's very fast. But BASIC will give you a good grounding for the Speccy.

I don't think that the Quicksilva program you mentioned is actually a 'proper' game designer, it just gives you a load of simplistic pre-written games you can change the graphics, sound etc. for. I don't think you'd actually learn much re: programming the Spectrum, but I have to admit I haven't actually tried it myself...
My Speccy site: thirdharmoniser.com
User avatar
Turtle_Quality
Manic Miner
Posts: 502
Joined: Fri Dec 07, 2018 10:19 pm

Re: Best way to learn?

Post by Turtle_Quality »

Just to follow up my earlier comment, BASINC is a Basic development environment that can make it easier to write and debug Spectrum games on a PC, these days everyone is used to cut and paste it can be annoying when they are gone. And it includes a bunch of example .BAS files with very simple versions of many games, such as breakout and blackjack (well Pontoon anyway, isn't that the same thing). So even if you don't want to stay on your native spectrum, it's worth downloading the package to get the example listings.

One thing to note, when BASIN exports basic listings as .BAS it defines the variables at the start (see below). A real Spectrum would not understand these, so don't try to type them in

# Run-time Variables

Var a: Num = 0
Var xc: Num = 10
Var yc: Num = 10
Definition of loop : see loop
OldGamer
Drutt
Posts: 34
Joined: Mon Jun 10, 2019 1:45 am

Re: Best way to learn?

Post by OldGamer »

Turtle_Quality wrote: Tue Jun 11, 2019 12:35 pm Just to follow up my earlier comment, BASINC is a Basic development environment that can make it easier to write and debug Spectrum games on a PC, these days everyone is used to cut and paste it can be annoying when they are gone. And it includes a bunch of example .BAS files with very simple versions of many games, such as breakout and blackjack (well Pontoon anyway, isn't that the same thing). So even if you don't want to stay on your native spectrum, it's worth downloading the package to get the example listings.

One thing to note, when BASIN exports basic listings as .BAS it defines the variables at the start (see below). A real Spectrum would not understand these, so don't try to type them in

# Run-time Variables

Var a: Num = 0
Var xc: Num = 10
Var yc: Num = 10
That sounds great! Thank you, I'll give it a go.
User avatar
ZXDunny
Manic Miner
Posts: 498
Joined: Tue Nov 14, 2017 3:45 pm

Re: Best way to learn?

Post by ZXDunny »

Hey, just a heads-up - if you're learning BASIC on a Speccy, give the BASIC group on Facebook a try. It's chock full of really enthusiastic folk who adore our little language:

https://www.facebook.com/groups/ZXBasic/

As well as popping your queries in here, of course. And as a group we all recommend you use BASin as the easiest way to code BASIC on a speccy :)
Post Reply