25個不錯PHP的遊戲編程腳本代碼分享 - OSCHINA - 中文開源技術...

2021-01-12 開源中國

本文介紹了25個不錯PHP的遊戲編程腳本代碼,包括簡單的擲骰器、隨機名稱生成器、場景生成器、牌組創建器(Deck builder)和裝備(shuffler)、簡單的撲克發牌器、Hangman遊戲、縱橫字謎助手、米德裡比斯、樂透機等。希望能夠對你的工作有所幫助。

簡單的擲骰器

許多遊戲和遊戲系統都需要骰子。讓我們先從簡單的部分入手:擲一個六面骰子。實際上,滾動一個六面骰子就是從 1 到 6 之間選擇一個隨機數字。在 PHP 中,這十分簡單:echo rand(1,6);。

在許多情況下,這基本上很簡單。但是在處理機率遊戲時,我們需要一些更好的實現。PHP 提供了更好的隨機數字生成器:mt_rand()。在不深入研究兩者差別的情況下,可以認為 mt_rand 是一個更快、更好的隨機數字生成器:echo mt_rand(1,6);。如果把該隨機數字生成器放入函數中,則效果會更好。

清單 1. 使用 mt_rand() 隨機數字生成器函數

function roll () {   return mt_rand(1,6);   }   echo roll(); 

然後可以把需要滾動的骰子類型作為參數傳遞給函數。

清單 2. 將骰子類型作為參數傳遞

function roll ($sides) {   return mt_rand(1,$sides);   }   echo roll(6);    echo roll(10);    echo roll(20);   

從這裡開始,我們可以繼續根據需要一次滾動多個骰子,返回結果數組;也可以一次性滾動多個不同類型的骰子。但是大多數任務都可以使用這個簡單的腳本。

隨機名稱生成器

如果正在運行遊戲、編寫故事或者一次性創建大批字符,有時會疲於應付不斷出現的新名字。讓我們看一看可用於解決此問題的一個簡單隨機名稱生成器。首先,讓我們創建兩個簡單數組 — 一個用於名字,一個用于姓氏。

清單 3. 名字和姓氏的兩個簡單數組

$male = array(   "William",   "Henry",   "Filbert",   "John",   "Pat",   );   $last = array(   "Smith",   "Jones",   "Winkler",   "Cooper",   "Cline",   ); 

然後就可以從每個數組中選擇一個隨機元素:echo $male[array_rand($male)] . ' ' . $last[array_rand($last)];。要一次性提取多個名稱,只需混合數組並根據需要提取。

清單 4. 混合名稱數組

shuffle($male);   shuffle($last);   for ($i = 0; $i <= 3; $i++) {   echo $male[$i] . ' ' . $last[$i];   } 

基於此基本概念,我們可以創建保存名字和姓氏的文本文件。如果在文本文件的每一行中存放一個名字,則可以輕鬆地用換行符分隔文件內容以構建原始碼數組。

清單 5. 創建名稱的文本文件

$male = explode('\n', file_get_contents('names.female.txt'));   $last = explode('\n', file_get_contents('names.last.txt')); 

構建或查找一些好的名字文件(代碼歸檔 中附帶了一些文件),此後我們絕不再需要為名字煩惱。

場景生成器

利用構建名字生成器使用的相同基本原理,我們可以構建場景生成器。此生成器不但在角色扮演遊戲中十分有用,而且在需要用到偽隨機環境集合(可用於角 色扮演、即興創作、寫作等情況)的情況下也十分有用。我最喜歡的遊戲之一,Paranoia 在其 GM Pack 中包括了 「任務混合器(mission blender)」。任務混合器可用於在快速滾動骰子時整合完整任務。讓我們整合自己的場景生成器。

考慮以下場景:您醒來後發現自己迷失於叢林中。您知道自己必須趕去紐約,但是不知道原因。您可以聽到附近的狗叫聲及清晰的敵方搜尋者的聲音。您渾身發冷、不住顫抖,而且沒有武器。該場景中的每一句話都介紹場景的特定方面:

「您醒來後發現自己迷失於叢林中」 — 這句話將建立設置。

「您知道自己必須趕去紐約」 — 這句話將描述目標。

「您可以聽到狗叫聲」 — 這句話將介紹敵人。

「您渾身發冷、不住顫抖,而且沒有武器」 — 這句話將添加複雜度。

就像創建名字和姓氏的文本文件一樣,首先分別創建設置、目標、敵人和複雜度的文本文件。代碼歸檔中附帶了樣例文件。在擁有這些文件後,生成場景的代碼與生成名稱的代碼基本相同。

清單 6. 生成場景

$settings = explode("\n", file_get_contents('scenario.settings.txt'));   $objectives = explode("\n", file_get_contents('scenario.objectives.txt'));   $antagonists = explode("\n", file_get_contents('scenario.antagonists.txt'));   $complicati**** = explode("\n", file_get_contents('scenario.complicati****.txt'));   shuffle($settings);   shuffle($objectives);   shuffle($antagonists);   shuffle($complicati****);   echo $settings[0] . ' ' . $objectives[0] . ' ' . $antagonists[0] . ' '  . $complicati****[0] . "\n"; 

我們可以通過添加新文本文件向場景中添加元素,也可能希望添加多重複雜度。添加到基本文本文件中的內容越多,場景隨時間的變化就越多。

牌組創建器(Deck builder)和裝備(shuffler)

如果您要玩紙牌並且要處理與紙牌相關的腳本,我們需要用裝備中的工具整合一副牌組構建器。首先,讓我們構建一副標準紙牌。需要構建兩個數組 — 一個用於保存同花色的組牌,而另一個用於保存牌面。如果稍後需要添加新組牌或牌類型,則這樣做將獲得很好的靈活性。

清單 7. 構建一副標準撲克牌

$suits = array (   "Spades", "Hearts", "Clubs", "Diamonds"  );   $faces = array (   "Two", "Three", "Four", "Five", "Six", "Seven", "Eight",   "Nine", "Ten", "Jack", "Queen", "King", "Ace"  ); 

然後構建一副牌數組來保存所有紙牌值。只需使用一對 foreach 循環即可完成此操作。

清單 8. 構建一副牌數組

$deck = array();   foreach ($suits as $suit) {   foreach ($faces as $face) {   $deck[] = array ("face"=>$face, "suit"=>$suit);   }   } 

在構建了一副撲克牌數組後,我們可以輕鬆地洗牌並隨機抽出一張牌。

清單 9. 洗牌並隨機抽出一張牌

shuffle($deck);   $card = array_shift($deck);   echo $card['face'] . ' of ' . $card['suit']; 

現在,我們就獲得了抽取多副牌或構建多層牌盒(multideck shoe)的捷徑。

勝率計算器:發牌

由於構建撲克牌時會分別跟蹤每張牌的牌面和花色,因此可以通過編程方式利用這副牌來計算得到特定牌的機率。首先每隻手分別抽出五張牌。

清單 10. 每隻手抽出五張牌

$hands = array(1 => array(), 2=>array());   for ($i = 0; $i < 5; $i++) {   $hands[1][] = implode(" of ", array_shift($deck));   $hands[2][] = implode(" of ", array_shift($deck));   } 

然後可以查看這副牌,看看剩餘多少張牌以及抽到特定牌的機率是多少。查看剩餘的牌數十分簡單。只需要計算 $deck 數組中包含的元素數。要獲得抽到特定牌的機率,我們需要一個函數來遍歷整副牌並估算其餘牌以查看是否匹配。

清單 11. 計算抽到特定牌的機率

function calculate_odds($draw, $deck) {   $remaining = count($deck);   $odds = 0;   foreach ($deck as $card) {   if (  ($draw['face'] == $card['face'] && $draw['suit'] ==   $card['suit'] ) ||   ($draw['face'] == '' && $draw['suit'] == $card['suit'] ) ||   ($draw['face'] == $card['face'] && $draw['suit'] == '' ) ) {   $odds++;   }   }   return $odds . ' in ' $remaining;   } 

現在可以選出嘗試抽出的牌。為了簡單起見,傳入看上去類似某張牌的數組。我們可以查找特定的一張牌。

清單 12. 查找指定的一張牌

$draw = array('face' => 'Ace', 'suit' => 'Spades');   echo implode(" of ", $draw) . ' : ' . calculate_odds($draw, $deck); 

或者可以查找指定牌面或花色的牌。

清單 13. 查找指定牌面或花色的牌

$draw = array('face' => '', 'suit' => 'Spades');   $draw = array('face' => 'Ace', 'suit' => ''); 

簡單的撲克發牌器

現在已經得到牌組構建器和一些工具,可以幫助計算出抽出特定卡的機率,我們可以整合一個真正簡單的發牌器來進行發牌。出於本例的目的,我們將構建一 個可以抽出五張牌的發牌器。發牌器將從整副牌中提供五張牌。使用數字指定需要放棄哪些牌,並且發牌器將用一副牌中的其他牌替換這些牌。我們無需指定發牌限 制或特殊規則,但是您可能會發現這些是非常有益的個人經驗。

如上一節所示,生成並洗牌,然後每隻手五張牌。按數組索引顯示這些牌,以便可以指定返回哪些牌。您可以使用表示要替換哪些牌的複選框來完成此操作。

清單 14. 使用複選框表示要替換的牌

foreach ($hand as $index =>$card) {   echo "< span=""> . $index . "]'>  <> " . $card['face'] . ' of ' . $card['suit'] . "";   } 

然後,計算輸入 array $_POST['card'],查看哪些牌已被選擇用於替換。

清單 15. 計算輸入

$i = 0;   while ($i < 5) {   if (isset($_POST['card'][$i])) {   $hand[$i] = array_shift($deck);   }   } 

使用此腳本,您可以嘗試找到處理特定一組牌的最佳方法。

Hangman 遊戲

Hangman 實質上是一款猜字遊戲。給定單詞的長度,我們使用有限的幾次機會猜這個單詞。如果猜出了出現在該單詞中的一個字母,則填充該字母出現的所有位置。在猜錯若 幹次(通常為六次)後,您就輸了比賽。要構建一個簡陋的 hangman 遊戲,我們需要從單詞列表開始。現在,讓我們把單詞列表製作成一個簡單的數組。

清單 16. 創建單詞列表

$words = array (   "giants",   "triangle",   "particle",   "birdhouse",   "minimum",   "flood"  ); 

使用前面介紹的技術,我們可以把這些單詞移動到外部單詞列表文本文件中,然後根據需要導入。

在得到單詞列表後,需要隨機選出一個單詞,將每個字母顯示為空,然後開始猜測。我們需要在每次進行猜測時跟蹤正確和錯誤的猜測。只需序列化猜測數組並在每次猜測時傳遞它們,就可實現跟蹤目的。如果需要阻止人們通過查看頁面原始碼僥倖猜對,則需要執行一些更安全的操作。

構建數組以保存字母和正確/錯誤的猜測。對於正確的猜測,我們將用字母作為鍵並用句點作為值填充數組。

清單 17. 構建保存字母和猜測結果的數組

$letters = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',   'p','q','r','s','t','u','v','w','x','y','z');   $right = array_fill_keys($letters, '.');   $wrong = array(); 

現在需要一些代碼來評估猜測並在完成猜字遊戲的過程中顯示該單詞。

清單 18. 評估猜測並顯示進度

if (stristr($word, $guess)) {   $show = '';   $right[$guess] = $guess;   $wordletters = str_split($word);   foreach ($wordletters as $letter) {   $show .= $right[$letter];   }   } else {   $show = '';   $wrong[$guess] = $guess;   if (count($wrong) == 6) {   $show = $word;   } else {   foreach ($wordletters as $letter) {   $show .= $right[$letter];   }   }   } 

在原始碼歸檔 中,可以看到如何序列化猜測數組並將該數組從一次猜測傳遞到另一次猜測中。

縱橫字謎助手

我知道這樣做不合適,但是有時在玩縱橫拼字謎時,您不得不費勁地找出以 C 開頭並以 T 結尾、包含五個字母的單詞。使用為 Hangman 遊戲構建的相同單詞列表,我們可以輕鬆地搜索符合某個模式的單詞。首先,找到一種傳輸單詞的方法。為了簡單起見,用句點替換缺少的字母:$guess = "c...t";。由於正則表達式將把句點處理為單個字符,因此我們可以輕鬆地遍歷單詞列表以查找匹配。

清單 19. 遍歷單詞列表

foreach ($words as $word) {   if (preg_match("/^" . $_POST['guess'] . "$/",$word)) {   echo $word . "\n";   }   } 

根據單詞列表的質量及猜測的準確度,我們應當能夠得到合理的單詞列表以用於可能的匹配。您必須自己決定 「表示 『不按規則玩』 的由五個字母組成的單詞」 的謎底是 「chest」 還是 「cheat」。

米德裡比斯

米德裡比斯是一款文字遊戲,玩家在遊戲中得到一個簡短的故事並用同一類型的不同單詞替換主要類型的單詞,從而創建同一個故事的更無聊的新版本。閱讀 以下文本:「I was walking in the park when I found a lake. I jumped in and swallowed too much water. I had to go to the hospital.」 開始用其他單詞標記替換單詞類型。開始和結束標記帶有下劃線用於阻止意外的字符串匹配。

清單 20. 用單詞標記替換單詞類型

$text = "I was _VERB_ing in the _PLACE_ when I found a _NOUN_.   I _VERB_ed in, and _VERB_ed too much _NOUN_.  I had to go to the _PLACE_."; 

接下來,創建幾個基本單詞列表。對於本例,我們也不會做得太複雜。

清單 21. 創建幾個基本單詞列表

$verbs = array('pump', 'jump', 'walk', 'swallow', 'crawl', 'wail', 'roll');   $places = array('park', 'hospital', 'arctic', 'ocean', 'grocery', 'basement',   'attic', 'sewer');   $nouns = array('water', 'lake', 'spit', 'foot', 'worm',   'dirt', 'river', 'wankel rotary engine'); 

現在可以重複地評估文本來根據需要替換標記。

清單 22. 評估文本

while (preg_match("/(_VERB_)|(_PLACE_)|(_NOUN_)/", $text, $matches)) {   switch ($matches[0]) {   case '_VERB_' :   shuffle($verbs);   $text = preg_replace($matches[0], current($verbs), $text, 1);   break;   case '_PLACE_' :   shuffle($places);   $text = preg_replace($matches[0], current($places), $text, 1);   break;   case '_NOUN_' :   shuffle($nouns);   $text = preg_replace($matches[0], current($nouns), $text, 1);   break;   }   }   echo $text; 

很明顯,這是一個簡單而粗糙的示例。單詞列表越精確,並且花在基本文本上的時間越多,結果就越好。我們已經使用了文本文件創建名稱列表及基本單詞列表。使用相同原則,我們可以創建按類型劃分的單詞列表並使用這些單詞列表創建更加變化多端的米德裡比斯遊戲。

樂透機

全部選中樂透的六個正確號碼 —— 退一步說 —— 在統計學上是不可能的。不過,許多人仍然花錢去玩,而且如果您喜歡號碼,則查看趨勢圖可能很有趣。讓我們構建一個腳本,該腳本將允許跟蹤贏獎號碼並在列表中提供選擇次數最少的 6 個號碼。

(免責聲明:這不會幫助您中樂透獎,因此請不要花錢購買獎券。這只是為了娛樂)。

把贏獎的樂透選擇保存到文本文件中。用逗號分隔各個號碼並把每組號碼放在單獨一行中。使用換行符分隔文件內容並使用逗號分隔行後,可以得到類似清單 23 的內容。

清單 23. 把選擇的贏獎樂透保存到文本文件中

$picks = array(   array('6', '10', '18', '21', '34', '40'),   array('2', '8', '13', '22', '30', '39'),   array('3', '9', '14', '25', '31', '35'),   array('11', '12', '16', '24', '36', '37'),   array('4', '7', '17', '26', '32', '33')   ); 

很明顯,這不足以成為繪製統計數據的基本文件。但是它是一個開端,並且足以演示基本原理。

設置一個基本數組以保存選擇範圍。例如,如果選擇 1 到 40 之間(例如,$numbers = array_fill(1,40,0);)的號碼,則遍歷我們的選擇,遞增相應的匹配值。

清單 24. 遍歷選擇

foreach ($picks as $pick) {   foreach ($pick as $number) {   $numbers[$number]++;   }   } 

最後,根據值將號碼排序。此操作應當會把最少選擇的號碼放在數組的前部。

清單 25. 根據值將號碼排序

asort($numbers);   $pick = array_slice($numbers,0,6,true);   echo implode(',', array_keys($pick)); 

通過有規律地向包含中獎號碼列表的文本文件添加實際的樂透中獎號碼,可以發現選號的長期趨勢。查看某些號碼的出現頻率十分有趣。

原文連結:http://www.cnblogs.com/aiyuchen/archive/2011/02/08/1949792.html

相關焦點

  • 25個不錯PHP的遊戲編程腳本代碼分享
    本文介紹了25個不錯PHP的遊戲編程腳本代碼,包括簡單的擲骰器、隨機名稱生成器、場景生成器、牌組創建器(Deck builder)和裝備(shuffler)、簡單的撲克發牌器、Hangman遊戲
  • 程式設計師經常看的開源月刊《HelloGitHub》第 57 期
    簡介分享 GitHub 上有趣、入門級的開源項目。這是一個面向編程新手、熱愛編程、對開源社區感興趣人群的月刊,月刊的內容包括:各種程式語言的項目、讓生活變得更美好的工具、書籍、學習筆記、教程等,這些開源項目大多都是非常容易上手,而且非常 Cool。主要是希望大家能動手用起來,加入到開源社區中。
  • 十點總結,為何 Linux 如此深得人心 - OSCHINA - 中文開源技術交流...
    6、開源Linux 最大的特點就是源碼可用,屬 FOSS 類別(免費和開源軟體)開發者可自由查看和修改源碼,能即使發現問題並解決。有些國家還在開發自己的 Linux 版本,這有助於國家在防範、通信等戰略領域開發自己的作業系統。
  • 10 個加速 CSS 開發的框架 - OSCHINA - 中文開源技術交流社區
    Compass 是一個開源的 CSS 製作框架。Sass 生成良好格式化的 CSS 代碼,易於組織和維護。 Less CSSDtCSS 是一個 PHP 腳本,用來對 CSS 文件進行預處理。DtCSS 可通過擴展 CSS 的特性來加速 CSS 編碼。例如嵌套選擇器、顏色混合等等。
  • FineUI(開源版)v4.2.0 發布了! - OSCHINA - 中文開源技術交流社區
    原始碼已經託管到OSC:http://git.oschina.net/sanshi
  • SonarQube Java 3.2 發布 - OSCHINA - 中文開源技術交流社區
    SonarQube Java 3.2 發布,此版本新增了一個用來檢測未閉合的資源(unclosed resources)規則和一個用戶測試代碼的規則。
  • php基礎大通關——十分鐘了解php基礎知識點之二
    所以本題選擇第三個答案。2. upload_max_filesize 中最大上傳默認設置是多少? 1 MB 2 MB 3 MB 4 MB解析:upload_max_filesize 中最大上傳默認設置是2M。
  • C/C++、Java、JavaScript、PHP、Python分別用來開發什麼?
    首先,我們先普及一下程式語言的基礎知識。用任何程式語言來開發程序,都是為了讓計算機幹活,比如編寫一篇文章,下載一首MP3等,而計算機幹活的CPU只認識機器的指令,所以,儘管不同的程式語言差異極大,最後都得「翻譯」成CPU可以執行的機器指令。理論上任何語言幹任何事情幾乎都可以,但是主要幹什麼那就不一樣了。
  • 一名40 歲「老」程式設計師的反思 - OSCHINA - 中文開源技術交流社區
    某個星期六的早晨,我參加了一個 React Native 技術交流會,演講者正在竭力說服我們為什麼它會成為移動開發領域真正的下一個大事件。但對我來說,它有點像十五年前的 jsp ,將所有的邏輯都放在演示代碼裡面。但我「老」了,我認為這是因為自己還沒有完全理解它。演講者展示完 ppt 後,現場進行編碼,還展示了大約半打我沒聽說過的配套工具,這些都讓我感到有點沮喪。
  • 13個最常用的CSS和HTML快速開發工具 - OSCHINA - 中文開源技術...
    要替換你信任已久的代碼編輯器很難,但若給Komodo Edit一個機會,它一定不會讓你失望的。 5)CSSTidyCSSTidy是一個開源CSS轉化和優化工具,它能在Windows、Linux、OSX下執行,可以像PHP腳本一樣由每行代碼來控制行為
  • 盤點微軟最應該開源的 15 款產品 - OSCHINA - 中文開源技術交流社區
    他們先是向Linux內核貢獻代碼,還開放了.NET核心、Visual Studio Code編輯器、甚至是Chakra JavaScript引擎(IE瀏覽器和Edge所用)的原始碼,而在和公司內部的開發者進行了漫長的談判之後,微軟最近又對博客工具Windows Live Writer進行了開源。可實際上,作為一家軟體巨頭,微軟還有不少產品都應該進行開源。
  • SP++3.0 發布,歡迎大家使用 - OSCHINA - 中文開源技術交流社區
    消息來自 Jerry 的博客: SP++ (Signal Processing in C++) 是一個關於信號處理與數值計算的開源C++程序庫,該庫提供了信號處理與數值計算中常用算法的
  • gRPC首頁、文檔和下載 - RPC 框架 - OSCHINA - 中文開源技術交流...
    gRPC 是一個高性能、開源和通用的開源中國組織翻譯的《gRPC 官方文檔中文版》:http://doc.oschina.net/grpcgRPC 基於 HTTP/2 標準設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接上的多復用請求等特。這些特性使得其在行動裝置上表現更好,更省電和節省空間佔用。
  • 工欲善其事必先利其器,盤點Github上那些優秀的PHP項目
    工欲善其事必先利其器,作為一個開發者,了解並使用前人造好的輪子能讓我們的開發事半功倍,在這裡老宅整理了幾個Github上有趣的php項目與大家分享。swoole Github倉庫名稱:swoole/swoole-src
  • 如何製造一個簡單的2D遊戲?
    VS是用來寫代碼的,因為做一個遊戲肯定要通過寫腳本來實現各種炫酷的功能啦。Unity的腳本編輯語言可以選擇C#或者JS,這裡建議選擇C#(原因會在下文中解釋)。如果本身有一定的JAVA編程基礎的話是可以比較快上手C#的,因為二者在語法上有點像。到這裡,遊戲引擎的選擇和基本設置就完成了,我們可以進入下一個步驟——開發了。
  • IEEE Spectrum 2018 年度程式語言排行榜,Python 衛冕
    (oschina2013)轉載請在文中註明來源和作者IEEE Spectrum 發布了 2018 年年度程式語言排行榜。IEEE Spectrum 程式語言排行榜一年發布一次,今年是其發布的第五年。IEEE Spectrum 對 48 種語言進行排行,其排序綜合 9 個重要線上數據源的 11 個指標而成(今年去掉了 Dice,因為其關閉了 API),例如 Stack Overflow、Twitter、Reddit、IEEE Xplore、GitHub、CareerBuilder 等。
  • 遊戲開發完整學習路線!就是一門實時渲染的藝術!
    不同遊戲引擎使用的程式語言或者腳本語言可能是不一樣的,所以當你想要學習某個遊戲引擎的時候,也應該留意該遊戲引擎所使用的語言。大部分情況是,Windows用的的是C++,同時結合lua或python腳本語言。而ios平臺下使用Objective-C或swift,安卓平臺下使用Java。
  • 直接拿來用,10個PHP代碼片段
    還記得CSDN研發頻道此前發表過的一篇《可以直接拿來用的15個jQuery代碼片段》嗎?本文筆者將繼續為你奉上10個超級有用的PHP代碼片段。PHP是一種HTML內嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言。PHP擁有數以百計的基本功能,支持上千種擴展。這些功能都被很好的加載在PHP站點上,但內置的庫有各種各樣的命名。
  • Activiti 5.11 發布,業務流程管理 - OSCHINA - 中文開源技術交流...
    聖誕大禮包這是我第一次為Activiti的發布撰文,因為這次的發布我覺得很有必要和大家分享,這其中包含了我期待的新特性和已知問題的修復;而且還有一個重量級的模塊Activiti Modeler。在5.8版本之前一直以每兩個月一版的的頻率發布,但是在5.8~5.10之間波動比較大,5.9和5.10都是5個月才發布一版,不過從5.11開始又開始恢復每兩個月一版的頻率了,我認為短周期的發布有利於佔領市場,對於開發者來說能儘快修複比較嚴重的問題。
  • Hutool 4.4.3 發布,尿布上的新版本 - OSCHINA - 中文開源技術交流...
    Hutool是一個 Java 工具包,也只是一個工具包,它幫助我們簡化每一行代碼,減少每一個方法,讓 Java 語言也可以"甜甜的"。Hutool 最初是我項目中util包的一個整理,後來慢慢積累並加入更多非業務相關功能,並廣泛學習其它開源項目精髓,經過自己整理修改,最終形成豐富的開源工具集。年末對自己來說最大的事情可能就是&ldquo;小王子&rdquo;的降生,Hutool的更新也稍稍慢了幾天,好在利用洗尿布的間隙處理完了累積下的issue,發布了這個版本。