坚持囚犯困境

时间:2016-02-22 22:54:47

标签: java

我必须做经典的Prisoner's Dilema java代码。

以下是说明:

表:

  1. 要求用户输入他们要做的事情:保持沉默或背叛。您必须使用JOptionPane下拉列表。

  2. 查找并使用Java随机数生成器来确定您的朋友将要做什么。

  3. 打印显示结果的消息。结果包括你们每个人所做的事情(保持沉默或背叛)以及每个人的判刑。该消息应该是一个句子或更多 - 没有 代码S或B,但实际的单词。

  4. 使用JOptionPane输入和输出

  5. 这是我到目前为止所做的:

    self.navigationItem.title = "foo"
    

    我知道这不是很多,但我不知道下一步该做什么

1 个答案:

答案 0 :(得分:1)

请注意,支付表实际上是一个2x2数组。因此,将游戏结果存储在每个单元格中。然后将用户的选择和朋友的选择检索为0(无声)或1(背叛)。这些是2x2数组的索引。最后,使用这些索引来获得结果:

import java.util.Random;
import javax.swing.*;

public class Rich04
{
    public static void main (String[] args)  
    {

        String[] ddList = {"Silent", "Betray"}; 
        String[][] sentenceMatrix = { 
                {"Both players chose to remain silent. Both get 1 year", "You stayed silent. Your friend betrayed. 5 for you; 0 for friend"},
                {"You betrayed. Your friend stayed silent. 0 for you; 5 for friend", "Both players betrayed. Both get 3 years"}
        };  

        //get user's choice
        Object selectedValue = JOptionPane.showInputDialog(
                null,
                "Choose one",  
                "Prisoner's Dilema",                 
                JOptionPane.QUESTION_MESSAGE,  
                null,                 
                ddList,                
                ddList[1]);
        int myChoiceNum = 0;
        if (((String)selectedValue).equalsIgnoreCase("Silent"))
            myChoiceNum = 0;
        else
            myChoiceNum = 1;

        //get friend's choice
        Random rand = new Random();
        int friendChoiceNum = rand.nextInt(2);
        String sentence = sentenceMatrix[myChoiceNum][friendChoiceNum];

        //output result
        JOptionPane.showMessageDialog(
                null,
                sentence,
                "Decision",
                JOptionPane.INFORMATION_MESSAGE);
    }
}