成人免费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游戲學習前端

2023-04-18 08:14:27

ElixirRustWebRTC

2021-01-01 19:30:21

Python編程語言

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五子棋

2015-11-02 17:25:23

Elixir編程語言未來

2013-09-10 09:54:50

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技術棧公眾號

主站蜘蛛池模板: 久久精品欧美一区二区三区不卡 | 在线成人免费视频 | 日韩成年人视频在线 | a在线观看 | 国产精品久久久久久久岛一牛影视 | 成人欧美一区二区三区在线播放 | aa级毛片毛片免费观看久 | 国产成人一区二区 | 91免费观看国产 | 久久久久久99 | 久久综合入口 | 欧美日韩高清在线观看 | 日韩在线精品 | 免费精品久久久久久中文字幕 | 国产成人精品午夜 | 黄色av免费网站 | 青青草国产在线观看 | 男女网站视频 | 一区二区不卡视频 | 日韩一区二区三区在线观看 | 国产日韩欧美精品 | 国产视频第一页 | 精品中文字幕在线观看 | 在线免费观看欧美 | 国产精品久久久久久吹潮日韩动画 | 免费在线观看成人 | 青青青伊人 | 性色av一区| 亚洲成人一区 | 亚洲精品视频在线播放 | 日韩欧美视频网站 | 黄色一级大片在线观看 | 精品久久久久久亚洲精品 | 99福利视频 | 成人影院网站ww555久久精品 | 91极品视频| 欧美日韩综合 | 久视频在线观看 | 伊人免费视频二 | 欧美男男videos| 亚洲日韩中文字幕一区 |