日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏...

發(fā)布時(shí)間:2023/12/3 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

網(wǎng)頁(yè)益智游戲怎么制作

Java 12以實(shí)驗(yàn)形式提供了switch表達(dá)式以及switch和break語(yǔ)句的新形式。 對(duì)于可能很少用到的構(gòu)造,有大量的新語(yǔ)法和語(yǔ)義-當(dāng)然,對(duì)于那些困惑者和認(rèn)證考試問(wèn)題的作者來(lái)說(shuō),這是一件了不起的禮物。 如果您喜歡Java拼圖游戲,并且可能想自己創(chuàng)建一些游戲,請(qǐng)繼續(xù)閱讀。

Java 12表達(dá)式開(kāi)關(guān)

Java的12只引入了一個(gè)表達(dá)切換 -a版本的switch是一個(gè)表達(dá)式,而不是一個(gè)聲明。 這是一個(gè)簡(jiǎn)單的示例:

enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }; public static int numLetters(Day day) {return switch (day) {case MONDAY, FRIDAY, SUNDAY -> 6;case TUESDAY -> 7;case THURSDAY, SATURDAY -> 8;default -> 9;}; }

真好。

請(qǐng)注意,這種形式的switch是一個(gè)表達(dá)式 。 在這種情況下,它的值是return語(yǔ)句中的表達(dá)式。 您還可以將switch表達(dá)式分配給變量,將其作為方法參數(shù)傳遞,并執(zhí)行Java中的表達(dá)式可以執(zhí)行的所有其他操作。

該圖簡(jiǎn)要說(shuō)明了它:

表達(dá) 聲明
雙向分支 ? : if / else
多路分支 switch switch

為多向分支表達(dá)式指定一個(gè)運(yùn)算符會(huì)更加一致嗎? 當(dāng)然可以,但是……插入邪惡的笑聲……這樣我們就可以做更好的益智游戲!

前進(jìn)。 試試看。 您在哪里可以使用表達(dá)式? 當(dāng)然在switch語(yǔ)句中。

switch (switch (...) { case ... -> ...; case ... -> ... }) {case ...: ...; case ...: ...; }

填寫(xiě)一些有趣的內(nèi)容...然后詢問(wèn)結(jié)果是什么。 還要選擇“它不會(huì)編譯”。 (這就是答案。請(qǐng)注意表達(dá)式switch的第二個(gè)case分支中缺少的分號(hào)。)

此表達(dá)式switch具有顯著的功能: 不會(huì)掉線 。 您不必在每個(gè)case分支的末尾都放個(gè)break 。

太好了-缺少break是一個(gè)常見(jiàn)錯(cuò)誤。 但是對(duì)于益智游戲制造商來(lái)說(shuō),這似乎是倒退了一步。

別失望 我要給你帶來(lái)好消息。

價(jià)值突破

假設(shè)您要在分支之一中記錄某些內(nèi)容。

case TUESDAY -> { logger.info("Belgium?"); 7 } // Not legal Java

那是Scala語(yǔ)法。 在Scala中,塊是一個(gè)表達(dá)式,其值是該塊的最后一個(gè)表達(dá)式。 在此示例中,為7。但是Java沒(méi)有塊表達(dá)式。

Java 12(其版本號(hào)使我們想到了圣誕節(jié)的12個(gè)夜晚),帶有一個(gè)給拼圖游戲者的禮物:一個(gè)新的break聲明。 它的目的是從case分支的一個(gè)塊中返回一個(gè)值:

case TUESDAY -> { logger.info("Belgium?"); break 7; }

順便說(shuō)一句, ->專門(mén)用來(lái)提醒您lambda表達(dá)式。 在lambda表達(dá)式中,您有類似的問(wèn)題。 假設(shè)您有一個(gè)產(chǎn)生表達(dá)式的lambda表達(dá)式。

Runnable task = () -> 42;

現(xiàn)在,您想添加一個(gè)日志記錄調(diào)用。 您做的事情很相似:

表達(dá) 聲明
拉姆達(dá) Runnable r = () -> 42; Runnable r = () -> { logger.log(...); return 42; };
case分支 case ... -> 42; case ... -> { logger.log(...); break 42; }

順便說(shuō)一句,老鷹眼的讀者會(huì)注意到,該表的一個(gè)象限中沒(méi)有末端分號(hào)。 更多益智游戲材料…

這個(gè)break語(yǔ)句確實(shí)像return 。 它可以嵌套在另一個(gè)塊中,然后跳到外面,產(chǎn)生值。

case ... -> { if (n % 2 == 0) break 42; else { logger.log(...); break 21; } }

當(dāng)然,在loop和switch語(yǔ)句中, break含義已經(jīng)不同。 例如,這是非法的:

case ... -> {for (int i = 0; i < a.length; i++) {if (a[i] == x) break i; // Error}break -1; }

值break與return完全相同,但在內(nèi)部循環(huán)和switch語(yǔ)句中除外,這是禁止的。 繼續(xù)吧-立即解決這個(gè)問(wèn)題。 你知道你想。

標(biāo)記的休息

早在1995年,Java 1.0就引入了諸如類和接口,垃圾回收和Unicode字符串之類的創(chuàng)新,同時(shí)堅(jiān)持使用C語(yǔ)言語(yǔ)法來(lái)編寫(xiě)許多程序員熟悉的控制結(jié)構(gòu)。 除了一個(gè)小變化。

在Java中,您可以使用帶標(biāo)簽的 break中斷嵌套循環(huán),并到達(dá)循環(huán)的結(jié)尾 ,該循環(huán)的開(kāi)頭具有匹配的標(biāo)簽。 像這樣:

int i = 0; int j = 0; found: while (i < a.length) {while (j < a[i].length) {if (a[i][j] == x) break found;j++;}i++; } // Execution continues here after break found;

您曾經(jīng)使用此功能嗎? 如果沒(méi)有,請(qǐng)不要擔(dān)心。 除了認(rèn)證考試,很少有人參加。

如果您在帶有break foo;的case有一個(gè)循環(huán),該怎么辦? ? 這完全取決于。 如果foo作為封閉循環(huán)的標(biāo)簽出現(xiàn),則有一個(gè)標(biāo)記為break的標(biāo)簽。 如果不是,并且foo是一個(gè)變量,則您有一個(gè)break值。 如果你們兩個(gè)都有呢? 那是語(yǔ)法錯(cuò)誤。

繼續(xù),做一個(gè)令人困惑的事情。 你知道你想。

箭頭開(kāi)關(guān)語(yǔ)句

再看看表達(dá)式switch語(yǔ)法。 你可以說(shuō)

case MONDAY, FRIDAY, SUNDAY ->

代替

case MONDAY: case FRIDAY: case SUNDAY:

很好-替代方法看起來(lái)很奇怪:

case MONDAY -> case FRIDAY -> case SUNDAY -> // Just kidding

表情switch真是太好了。 沒(méi)有失敗。 無(wú)需重復(fù)case 。 switch語(yǔ)句變得令人羨慕。

因此,Java設(shè)計(jì)師決定變得不錯(cuò),并允許它參與其中。 您現(xiàn)在可以編寫(xiě):

switch (day) {case MONDAY, FRIDAY, SUNDAY -> // No repeating of casenumLetters = 6; // No fallthrough after ->case TUESDAY -> { logger.info("Tuesday"); numLetters = 7; } case THURSDAY, SATURDAY -> numLetters = 8; default -> numLetters = 9; }

頑皮開(kāi)關(guān)表達(dá)式

現(xiàn)在該輪到表情switch 。 現(xiàn)在switch語(yǔ)句有兩種形式:頑皮(1970年左右)和nice(2018年)。 如果表情switch想要調(diào)皮,會(huì)跌倒怎么辦?

這是2 x 2圖的謬誤出現(xiàn)的地方:

表達(dá) 聲明
沒(méi)有失敗 int numLetters = switch (day) {case MONDAY, FRIDAY, SUNDAY -> 6;case TUESDAY -> 7;case THURSDAY, SATURDAY -> 8;default -> 9; };switch (day) {case MONDAY, FRIDAY, SUNDAY ->numLetters = 6;case TUESDAY -> {logger.info("Tuesday");numLetters = 7;}case THURSDAY, SATURDAY ->numLetters = 8;default ->numLetters = 9; }
跌倒 ???switch(day) {case MONDAY, FRIDAY, SUNDAY:numLetters = 6;break;case TUESDAY:logger.info("Tuesday");numLetters = 7;break;case THURSDAY:logger.info("Thursday"); case SATURDAY:numLetters = 8;break;default:numLetters = 9; }

我們真的需要填寫(xiě)缺失的象限嗎?

顯然是的。

int numLetters = switch(day) {case MONDAY, FRIDAY, SUNDAY:break 6;case TUESDAY:logger.info("Tuesday");break 7;case THURSDAY:logger.info("Thursday"); // Fallthroughcase SATURDAY:break 8;default:break 9; };

您可以在同一switch混合case ...:和case ... ->嗎? 可悲的是沒(méi)有。 曾經(jīng)有人考慮過(guò)這一點(diǎn),但是反益智游戲游說(shuō)組織了這一天。

您可以為第一個(gè)分支執(zhí)行case MONDAY: case FRIDAY: case SUNDAY:嗎? 您可以為此感到困惑,但是到那時(shí),您的聽(tīng)眾可能已經(jīng)失去了生存的意愿。

為您準(zhǔn)備的圣誕節(jié)前益智游戲

當(dāng)我對(duì)所有這些進(jìn)行演講時(shí),我知道我必須做一個(gè)困惑者。 這個(gè)開(kāi)關(guān)調(diào)皮還是不錯(cuò)? 它有什么作用?

int n = 0;n = switch (n) {case 0:n++;default: {O:while (n > 0) {if (n == 1) break O;n--;}if (n > 0) break n;elsebreak 0;}};
  • 語(yǔ)法錯(cuò)誤
  • 有無(wú)限循環(huán)
  • n設(shè)置為0
  • n設(shè)為1
  • 翻譯自: https://www.javacodegeeks.com/2018/12/give-me-break-make-awesome-puzzlers.html

    網(wǎng)頁(yè)益智游戲怎么制作

    總結(jié)

    以上是生活随笔為你收集整理的网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。