成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 Elixir 語言編寫一個小游戲

開發 后端
通過編寫“猜數字”游戲來學習 Elixir 編程語言,并將它與一個你熟知的語言做對比。

[[392708]]

通過編寫“猜數字”游戲來學習 Elixir 編程語言,并將它與一個你熟知的語言做對比。

為了更好的學習一門新的編程語言,最好的方法是去關注主流語言的一些共有特征:

  • 變量
  • 表達式
  • 語句

這些概念是大多數編程語言的基礎。因為這些相似性,只要你通曉了一門編程語言,你可以通過對比差異來熟知另一門編程語言。

另外一個學習新編程語言的好方法是開始編寫一個簡單標準的程序。它可以讓你集中精力在語言上而非程序的邏輯本身。在這個系列的文章中,我們使用“猜數字”程序來實現,在這個程序中,計算機會選擇一個介于 1 到 100 之間的數字,并要求你來猜測它。程序會循環執行,直到你正確猜出該數字為止。

“猜數字”這個程序使用了編程語言的以下概念:

  • 變量
  • 輸入
  • 輸出
  • 條件判斷
  • 循環

這是一個學習新編程語言的絕佳實踐。

猜數字的 Elixir 實現

Elixir 是一門被設計用于構建穩定可維護應用的動態類型的函數式編程語言。它與 Erlang 運行于同一虛擬機之上,吸納了 Erlang 的眾多長處的同時擁有更加簡單的語法。

你可以編寫一個 Elixir 版本的“猜數字”游戲來體驗這門語言。

這是我的實現方法:

  1. defmodule Guess do
  2. def guess() do
  3. random = Enum.random(1..100)
  4. IO.puts "Guess a number between 1 and 100"
  5. Guess.guess_loop(random)
  6. end
  7. def guess_loop(num) do
  8. data = IO.read(:stdio, :line)
  9. {guess, _rest} = Integer.parse(data)
  10. cond do
  11. guess < num ->
  12. IO.puts "Too low!"
  13. guess_loop(num)
  14. guess > num ->
  15. IO.puts "Too high!"
  16. guess_loop(num)
  17. true ->
  18. IO.puts "That's right!"
  19. end
  20. end
  21. end
  22.  
  23. Guess.guess()

Elixir 通過列出變量的名稱后面跟一個 = 號來為了給變量分配一個值。舉個例子,表達式 random = 0 給 random 變量分配一個數值 0。

代碼以定義一個模塊開始。在 Elixir 語言中,只有模塊可以包含命名函數。

緊隨其后的這行代碼定義了入口函數 guess(),這個函數:

  • 調用 Enum.random() 函數來獲取一個隨機整數
  • 打印游戲提示
  • 調用循環執行的函數

剩余的游戲邏輯實現在 guess_loop() 函數中。

guess_loop() 函數利用 尾遞歸 來實現循環。Elixir 中有好幾種實現循環的方法,尾遞歸是比較常用的一種方式。guess_loop() 函數做的最后一件事就是調用自身。

guess_loop() 函數的第一行讀取用戶輸入。下一行調用 parse() 函數將輸入轉換成一個整數。

cond 表達式是 Elixir 版本的多重分支表達式。與其他語言中的 if/elif 或者 if/elsif 表達式不同,Elixir 對于的首個分支或者最后一個沒有分支并沒有區別對待。

這個 cond 表達式有三路分支:猜測的結果可以比隨機數大、小或者相等。前兩個選項先輸出不等式的方向然后遞歸調用 guess_loop(),循環返回至函數開始。最后一個選項輸出 That's right,然后這個函數就完成了。

輸出例子

現在你已經編寫了你的 Elixir 代碼,你可以運行它來玩“猜數字”的游戲。每次你執行這個程序,Elixir 會選擇一個不同的隨機數,你可以一直猜下去直到你找到正確的答案:

  1. $ elixir guess.exs
  2. Guess a number between 1 and 100
  3. 50
  4. Too high
  5. 30
  6. Too high
  7. 20
  8. Too high
  9. 10
  10. Too low
  11. 15
  12. Too high
  13. 13
  14. Too low
  15. 14
  16. That's right!

“猜數字”游戲是一個學習一門新編程語言的絕佳入門程序,因為它用了非常直接的方法實踐了常用的幾個編程概念。通過用不同語言實現這個簡單的小游戲,你可以實踐各個語言的核心概念并且比較它們的細節。

你是否有你最喜愛的編程語言?你將怎樣用它來編寫“猜數字”這個游戲?關注這個系列的文章來看看其他你可能感興趣的語言實現。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-01-14 08:55:20

C語言編程

2020-11-30 06:20:13

javascript

2022-03-24 07:57:58

Python水果忍者游戲

2017-01-12 22:36:30

2021-02-05 16:03:48

JavaScript游戲學習前端

2021-01-01 19:30:21

Python編程語言

2023-04-18 08:14:27

ElixirRustWebRTC

2021-03-30 05:58:01

JavascriptCss3轉盤小游戲

2021-01-03 16:30:34

Rust編程語言

2023-11-29 08:10:36

javascriptH5游戲

2022-11-09 11:57:17

原生JS五子棋

2013-09-10 09:54:50

2015-11-02 17:25:23

Elixir編程語言未來

2022-11-07 11:27:00

JS游戲開發

2023-09-25 12:35:27

Python

2021-01-05 12:38:53

C++編程語言軟件開發

2012-01-04 13:55:23

Canvas

2023-10-10 13:28:44

Pythonpygame

2021-03-08 10:21:22

開源技術 框架

2013-12-13 08:59:15

C++游戲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美五月婷婷 | 亚洲精品91| 成人一区二区三区在线观看 | 91最新入口| 超碰在线亚洲 | 国产精品永久 | 一区二区三区四区国产精品 | 久久国产精品一区二区三区 | 在线观看日韩 | 久久久久久国产精品免费免费 | 亚洲成人一区二区 | 亚洲精品久久久久久国产精华液 | 黄色一级毛片 | 影音av| 国产99视频精品免费播放照片 | 九色在线观看 | 久久亚洲天堂 | 日韩淫片免费看 | 在线日韩精品视频 | 欧美综合一区二区三区 | 精品自拍视频在线观看 | 日韩精品一二三 | 国产乱码精品一区二区三区忘忧草 | 日韩欧美一二三区 | 欧美精品一区在线发布 | 天天干天天操 | 精品亚洲二区 | 伊人在线视频 | 久久精品国产一区二区三区 | 国产精品1 | 欧美一级欧美三级在线观看 | 国产中的精品av涩差av | 成人欧美一区二区三区在线观看 | 日本韩国欧美在线观看 | 欧美一区二区小视频 | 国产九九精品 | 欧美日韩国产一区二区 | 欧美一级毛片在线播放 | 日韩av一区二区在线观看 | 毛片免费观看 | 一级毛片视频在线观看 |