mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-03 23:40:14 +08:00
Merge pull request #28545 from lkxed/20230202-1-Learn-Basic-by-coding-a-game
[手动选题][tech]: 20230202.1 ⭐️ Learn Basic by coding a game.md
This commit is contained in:
commit
54d076a6ae
132
sources/tech/20230202.1 ⭐️ Learn Basic by coding a game.md
Normal file
132
sources/tech/20230202.1 ⭐️ Learn Basic by coding a game.md
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
[#]: subject: "Learn Basic by coding a game"
|
||||||
|
[#]: via: "https://opensource.com/article/23/2/learn-basic-coding-game"
|
||||||
|
[#]: author: "Moshe Zadka https://opensource.com/users/moshez"
|
||||||
|
[#]: collector: "lkxed"
|
||||||
|
[#]: translator: " "
|
||||||
|
[#]: reviewer: " "
|
||||||
|
[#]: publisher: " "
|
||||||
|
[#]: url: " "
|
||||||
|
|
||||||
|
Learn Basic by coding a game
|
||||||
|
======
|
||||||
|
|
||||||
|
Writing the same application in multiple languages is a great way to learn new ways to program. Most programming languages have certain things in common, such as:
|
||||||
|
|
||||||
|
- Variables
|
||||||
|
- Expressions
|
||||||
|
- Statements
|
||||||
|
|
||||||
|
These concepts are the basis of most programming languages. Once you understand them, you can start figuring the rest out.
|
||||||
|
|
||||||
|
Programming languages usually share some similarities. Once you know one programming language, you can learn the basics of another by recognizing its differences.
|
||||||
|
|
||||||
|
Practicing with a standard program is a good way of learning a new language. It allows you to focus on the language, not the program's logic. I'm doing that in this article series using a "guess the number" program, in which the computer picks a number between one and 100 and asks you to guess it. The program loops until you guess the number correctly.
|
||||||
|
|
||||||
|
This program exercises several concepts in programming languages:
|
||||||
|
|
||||||
|
- Variables
|
||||||
|
- Input
|
||||||
|
- Output
|
||||||
|
- Conditional evaluation
|
||||||
|
- Loops
|
||||||
|
|
||||||
|
It's a great practical experiment to learn a new programming language. This article focuses on Basic.
|
||||||
|
|
||||||
|
### Guess the number in (Bywater) Basic
|
||||||
|
|
||||||
|
There is no real standard for the Basic programming language. Wikipedia says, "BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use." The [BWBasic][1] implementation is available under the GPL.
|
||||||
|
|
||||||
|
You can explore Basic by writing a version of the "guess the number" game.
|
||||||
|
|
||||||
|
### Install Basic on Linux
|
||||||
|
|
||||||
|
In Debian or Ubuntu, you can install Basic with the following:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ apt install -y bwbasic
|
||||||
|
```
|
||||||
|
|
||||||
|
Download the latest release tarball for Fedora, CentOS, Mageia, and any other Linux distribution. Extract it, make it executable, and then run it from a terminal:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ tar --extract --file bwbasic*z
|
||||||
|
|
||||||
|
$ chmod +x bywater
|
||||||
|
|
||||||
|
$ ./bywater
|
||||||
|
```
|
||||||
|
|
||||||
|
On Windows, [download the .exe release][2].
|
||||||
|
|
||||||
|
### Basic code
|
||||||
|
|
||||||
|
Here is my implementation:
|
||||||
|
|
||||||
|
```
|
||||||
|
10 value$ = cint(rnd * 100) + 1
|
||||||
|
20 input "enter guess"; guess$
|
||||||
|
30 guess$ = val(guess$)
|
||||||
|
40 if guess$ < value$ then print "Too low"
|
||||||
|
50 if guess$ > value$ then print "Too high"
|
||||||
|
60 if guess$ = value$ then 80
|
||||||
|
70 goto 20
|
||||||
|
80 print "That's right"
|
||||||
|
```
|
||||||
|
|
||||||
|
Basic programs can be numbered or unnumbered. Usually, it is better to write programs unnumbered, but writing them with numbered lines makes it easier to refer to individual lines.
|
||||||
|
|
||||||
|
By convention, coders write lines as multiples of 10. This approach allows interpolating new lines between existing ones for debugging. Here's an explanation of my method above:
|
||||||
|
|
||||||
|
- Line 10: Computes a random value between 1 and 100 using the built-in **rnd** function, which generates a number between 0 and 1, not including 1.
|
||||||
|
- Line 20: Asks for a guess and puts the value in the **guess$ scalar** variable. Line 30 converts the value to a numeric one.
|
||||||
|
- Lines 40 and 50: Give the guesser feedback, depending on the comparison.
|
||||||
|
- Line 70: Goes to the beginning of the loop.
|
||||||
|
- Line 60: _Breaks_& the loop by transferring control to line 80. Line 80 is the last line, so the program exits after that.
|
||||||
|
|
||||||
|
### Sample output
|
||||||
|
|
||||||
|
The following is an example of the program after putting it in `program.bas`:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ bwbasic program.bas
|
||||||
|
Bywater BASIC Interpreter/Shell, version 2.20 patch level 2
|
||||||
|
Copyright (c) 1993, Ted A. Campbell
|
||||||
|
Copyright (c) 1995-1997, Jon B. Volkoff
|
||||||
|
|
||||||
|
enter guess? 50
|
||||||
|
Too low
|
||||||
|
enter guess? 75
|
||||||
|
Too low
|
||||||
|
enter guess? 88
|
||||||
|
Too high
|
||||||
|
enter guess? 80
|
||||||
|
Too low
|
||||||
|
enter guess? 84
|
||||||
|
Too low
|
||||||
|
enter guess? 86
|
||||||
|
Too high
|
||||||
|
enter guess? 85
|
||||||
|
That's right
|
||||||
|
```
|
||||||
|
|
||||||
|
### Get started
|
||||||
|
|
||||||
|
This "guess the number" game is a great introductory program for learning a new programming language because it exercises several common programming concepts in a pretty straightforward way. By implementing this simple game in different programming languages, you can demonstrate some core concepts of the languages and compare their details.
|
||||||
|
|
||||||
|
Do you have a favorite programming language? How would you write the "guess the number" game in it? Follow this article series to see examples of other programming languages that might interest you!
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
via: https://opensource.com/article/23/2/learn-basic-coding-game
|
||||||
|
|
||||||
|
作者:[Moshe Zadka][a]
|
||||||
|
选题:[lkxed][b]
|
||||||
|
译者:[译者ID](https://github.com/译者ID)
|
||||||
|
校对:[校对者ID](https://github.com/校对者ID)
|
||||||
|
|
||||||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
[a]: https://opensource.com/users/moshez
|
||||||
|
[b]: https://github.com/lkxed
|
||||||
|
[1]: https://yeolpishack.net/repos/ChipMaster/bwBASIC
|
||||||
|
[2]: https://github.com/nerun/bwbasic/releases
|
Loading…
Reference in New Issue
Block a user