Python 版本
python
import random
choices = [“石头”, “剪刀”, “布”] hezhongliancai.com
def get_computer_choice():
return random.choice(choices)
def determine_winner(player, computer):
if player == computer:
return “平局!”
elif (player == “石头” and computer == “剪刀”) or \
(player == “剪刀” and computer == “布”) or \
(player == “布” and computer == “石头”):
return “你赢了!”
else:
return “你输了!”
def play_game():
player_choice = input(“请输入你的选择(石头/剪刀/布):”).strip()
while player_choice not in choices:
player_choice = input(“无效输入,请重新输入(石头/剪刀/布):”).strip()
computer_choice = get_computer_choice()
print(f"计算机的选择是:{computer_choice}")
print(determine_winner(player_choice, computer_choice))
play_game()
Java 版本
java
import java.util.Random;
import java.util.Scanner;
public class RockPaperScissors {
public static void main(String[] args) {
String[] choices = {"石头", "剪刀", "布"};
Random rand = new Random();
Scanner scanner = new Scanner(System.in);
String playerChoice = "";
String computerChoice = choices[rand.nextInt(choices.length)];
System.out.println("请输入你的选择(石头/剪刀/布):");
while (!isValidChoice(playerChoice = scanner.nextLine())) {
System.out.println("无效输入,请重新输入(石头/剪刀/布):");
}
System.out.println("计算机的选择是:" + computerChoice);
System.out.println(determineWinner(playerChoice, computerChoice));
scanner.close();
}
private static boolean isValidChoice(String choice) {
return choice.equals("石头") || choice.equals("剪刀") || choice.equals("布");
}
private static String determineWinner(String player, String computer) {
if (player.equals(computer)) {
return "平局!";
} else if ((player.equals("石头") && computer.equals("剪刀")) ||
(player.equals("剪刀") && computer.equals("布")) ||
(player.equals("布") && computer.equals("石头"))) {
return "你赢了!";
} else {
return "你输了!";
}
}
}
C# 版本
csharp
using System;
class RockPaperScissors
{
static string[] choices = { “石头”, “剪刀”, “布” };
static string GetComputerChoice()
{
Random rand = new Random();
return choices[rand.Next(choices.Length)];
}
static string DetermineWinner(string player, string computer)
{
if (player == computer)
{
return "平局!";
}
else if ((player == "石头" && computer == "剪刀") ||
(player == "剪刀" && computer == "布") ||
(player == "布" && computer == "石头"))
{
return "你赢了!";
}
else
{
return "你输了!";
}
}
static void Main()
{
string playerChoice = "";
string computerChoice = GetComputerChoice();
Console.WriteLine("请输入你的选择(石头/剪刀/布):");
while (!Array.Exists(choices, element => element == playerChoice))
{
playerChoice = Console.ReadLine().Trim();
if (!Array.Exists(choices, element => element == playerChoice))
{
Console.WriteLine("无效输入,请重新输入(石头/剪刀/布):");
}
}
Console.WriteLine($"计算机的选择是:{computerChoice}");
Console.WriteLine(DetermineWinner(playerChoice, computerChoice));
}
}
以上三种编程语言版本的“石头由于一个完整的App通常涉及多个组件(如前端、后端、数据库等),并且每种组件可能使用不同的编程语言或框架,我将为你概述一个简单的待办事项列表App的不同部分,并给出每种部分可能使用的语言或框架的示例代码片段。
- 前端(移动应用)
iOS (Swift/SwiftUI)
MainView.swift (部分代码)
swift
import SwiftUI
struct Task: Identifiable {
var id: UUID = UUID()
var name: String
}
struct MainView: View {
@State private var tasks = [Task(name: “Buy milk”), Task(name: “Do laundry”)]
var body: some View {
List {
ForEach(tasks) { task in
Text(task.name)
// 添加删除按钮等逻辑
}
.onDelete(perform: deleteTasks)
Button("Add Task") {
// 添加新任务的逻辑
}
}
.navigationTitle("Todo List")
}
func deleteTasks(at offsets: IndexSet) {
tasks.remove(atOffsets: offsets)
}
}
Android (Kotlin/Jetpack Compose)
MainActivity.kt (部分代码)
kotlin
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.tooling.preview.Preview
data class Task(val id: String = UUID.randomUUID().toString(), val name: String)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TodoListApp()
}
}
}
@Composable
fun TodoListApp() {
val tasks = mutableStateListOf(
Task(name = “Buy milk”),
Task(name = “Do laundry”)
)
Column {
LazyColumn(state = rememberLazyListState()) {
items(tasks) { task ->
Text(text = task.name)
// 添加删除按钮等逻辑
}
}
Button(onClick = {
// 添加新任务的逻辑
}) {
Text("Add Task")
}
}
}
2. 后端(API服务)
Node.js (Express + MongoDB)
server.js (部分代码)
javascript
const express = require(‘express’);
const mongoose = require(‘mongoose’);
const bodyParser = require(‘body-parser’);
const app = express();
const port = 3000;
mongoose.connect(‘mongodb://localhost/todolist’, {
useNewUrlParser: true,
useUnifiedTopology: true
});
const TaskSchema = new mongoose.Schema({
name: String
});
const Task = mongoose.model(‘Task’, TaskSchema);
app.use(bodyParser.json());
app.get(‘/tasks’, async (req, res) => {
try {
const tasks = await Task.find();
res.json(tasks);
} catch (error) {
res.status(500).send(‘Server error’);
}
});
app.post(‘/tasks’, async (req, res) => {
const { name } = req.body;
const newTask = new Task({ name });
try {
await newTask.save();
res.send(‘Task created’);
} catch (error) {
res.status(500).send(‘Server error’);
}
});
app.listen(port, () => {
console.log(Server running at http://localhost:${port}
);
});
3. 数据库(MongoDB)
MongoDB 本身是 NoSQL 数据库,不需要特定的“代码”来启动(除了配置和连接),但你需要确保 MongoDB 服务正在运行,并且你的应用(如上面的 Node.js 示例)能够连接到它。
注意
这些代码片段是高度简化的,仅用于说明目的。
在实际开发中,你需要处理更多的边缘情况、错误处理、安全性(如