用GO语言来写一个逻辑稍微复杂一些的猜字游戏,我们可以先来看下代码
package main
import "fmt"
import "math/rand"
import "time"
var DEBUG bool = false
func main() {
var randNum int
CreateNum(&randNum)
randSlice := make([]int, 4)
GetSignNum(randSlice, randNum)
StartGame(randSlice)
}
func CreateNum(p *int) {
rand.Seed(time.Now().UnixNano())
var num int
for {
num = rand.Intn(10000)
if num >= 1000 {
break
}
}
*p = num
if DEBUG {
fmt.Println("p:", *p)
}
}
func GetSignNum(a []int, b int) {
a[0] = b / 1000
a[1] = (b % 1000) / 100
a[2] = (b % 100) / 10
a[3] = b % 10
if DEBUG {
fmt.Println(a)
}
}
func PrintTips() {
fmt.Println("请输入【1】开始游戏,【2】查看游戏规则,【3】退出游戏")
PrintLine()
}
func PrintLine() {
fmt.Println("-----------------------------------------------------")
}
func StartGame(randSlice []int) {
var cmd int
var num int
fmt.Println("欢迎来到猜字游戏...")
PrintTips()
for {
fmt.Scan(&cmd)
if DEBUG {
fmt.Println("cmd:", cmd)
}
if cmd == 1 {
fmt.Println("游戏开始")
fmt.Println("请输入四位数字,或输入520号返回上一级")
PrintLine()
for {
fmt.Scan(&num)
if num == 520 {
PrintTips()
break
}
n := 0
if num > 999 && num < 10000 {
keySlice := make([]int, 4)
GetSignNum(keySlice, num)
for i := 0; i < 4; i++ {
if keySlice[i] > randSlice[i] {
fmt.Println("第", i+1, "个数大了一点")
} else if keySlice[i] < randSlice[i] {
fmt.Println("第", i+1, "个数小了一点")
} else {
fmt.Println("第", i+1, "个数猜对了")
n++
}
}
PrintLine()
if n == 4 {
fmt.Println("不可思议")
fmt.Println("你竟然全部猜对了")
fmt.Println("游戏通关!")
PrintTips()
break
}
} else {
fmt.Println("你输入的数字有误,请重新输入四位数字!")
PrintLine()
}
}
} else if cmd == 2 {
fmt.Println("【游戏规则】")
fmt.Println("- 本游戏核心为猜字游戏")
fmt.Println("- 将随机产生四位数字")
fmt.Println("- 由玩家输入对应的四位数来猜")
fmt.Println("- 游戏会针对玩家输入的数字进行提示")
fmt.Println("- 最终将游戏过关")
PrintLine()
} else if cmd == 3 {
fmt.Println("游戏结束!")
break
}
}
}
代码整体来说还是比较简洁的,逻辑性也很简单,大家可以看下跑起来是什么样子
小游戏的逻辑也很简单,就是产生四个随机数然后比较一下,同类型功能我们再来看下其他语言的写法
这里我用JAVA写了一遍
package com.liuguilin.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Game {
private static final boolean DEBUG = false;
public static void main(String[] array) {
int randNum = CreateNum();
List<Integer> mListRand = new ArrayList<>();
GetSignNum(mListRand, randNum);
StartGame(mListRand);
}
private static void PrintTips(){
System.out.println("请输入【1】开始游戏,【2】查看游戏规则,【3】退出游戏");
}
private static void PrintLine(){
System.out.println("-----------------------------------------------------");
}
private static void Print(String text){
System.out.println(text);
}
private static void StartGame(List<Integer> mListRand) {
Print("欢迎来到猜字游戏...");
PrintTips();
while (true) {
Scanner sc = new Scanner(System.in);
int cmd = sc.nextInt();
if (DEBUG) Print("cmd:" + cmd);
if (cmd == 1) {
Print("游戏开始");
Print("请输入四位数字,或输入520号返回上一级");
PrintLine();
while (true) {
int num = sc.nextInt();
if (DEBUG) Print("num:" + num);
if (num == 520) {
PrintTips();
break;
}
if (num > 999 && num < 10000 ){
int n = 0;
List<Integer>mListKey = new ArrayList<>();
GetSignNum(mListKey, num);
for (int i = 0; i < 4; i++) {
if (mListKey.get(i) > mListRand.get(i)) {
Print("第"+( i+1)+ "个数大了一点");
} else if(mListKey.get(i) < mListRand.get(i)) {
Print("第"+( i+1)+ "个数小了一点");
} else {
Print("第"+ (i+1)+"个数猜对了");
n++;
}
}
PrintLine();
if (n == 4) {
Print("不可思议");
Print("你竟然全部猜对了");
Print("游戏通关!");
PrintTips();
break;
}
} else {
Print("你输入的数字有误,请重新输入四位数字!");
PrintLine();
}
}
} else if (cmd == 2) {
Print("【游戏规则】");
Print("- 本游戏核心为猜字游戏");
Print("- 将随机产生四位数字");
Print("- 由玩家输入对应的四位数来猜");
Print("- 游戏会针对玩家输入的数字进行提示");
Print("- 最终将游戏过关");
PrintLine();
} else if (cmd == 3) {
Print("游戏结束!");
break;
}
}
}
private static void GetSignNum(List<Integer> mListRand, int randNum) {
mListRand.add(randNum / 1000);
mListRand.add((randNum % 1000) / 100);
mListRand.add((randNum % 100) / 10);
mListRand.add(randNum % 10);
if (DEBUG) System.out.println("mListRand:" + mListRand.toString());
}
private static int CreateNum() {
int x;
while (true) {
x = (int) (Math.random() * 10000);
if (x >= 1000) {
break;
}
}
if (DEBUG) System.out.println("x:" + x);
return x;
}
}
大家有没有什么直观的感受?
来领略一下不同语言风格,会有不一样的感触。
好了,C++就不写了,大家有兴趣可以自己撸撸看。
|
请发表评论