From 2f7a34f778b966657ed22353f9e4d36530d84827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=BC=80=E7=AE=B1?= Date: Thu, 2 Feb 2023 21:05:11 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=89=8B=E5=8A=A8=E9=80=89=E9=A2=98][tech]:?= =?UTF-8?q?=2020230202.1=20=E2=AD=90=EF=B8=8F=20Learn=20Basic=20by=20codin?= =?UTF-8?q?g=20a=20game.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...30202.1 ⭐️ Learn Basic by coding a game.md | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 sources/tech/20230202.1 ⭐️ Learn Basic by coding a game.md diff --git a/sources/tech/20230202.1 ⭐️ Learn Basic by coding a game.md b/sources/tech/20230202.1 ⭐️ Learn Basic by coding a game.md new file mode 100644 index 0000000000..87ca9f035b --- /dev/null +++ b/sources/tech/20230202.1 ⭐️ Learn Basic by coding a game.md @@ -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