iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
1
自我挑戰組

艾利森踏上工程師之路的心路歷程系列 第 13

C sharp 學習筆記 (3/3)

  • 分享至 

  • xImage
  •  

印象深刻的回家作業農夫渡河
農夫要帶著狼、羊、菜過河
小船不夠大,因此農夫只能每次只帶一樣東西渡河
當農夫在的時候,狼、羊、菜都不會有事情
當農夫不在的時候,狼會吃羊,羊會吃菜

首先要先分析需求開始到完成程式碼的過程
遊戲畫面要如何安排設計
什麼樣的狀況會導致遊戲失敗的邏輯
什麼樣的狀況會讓遊戲結果是成功的

https://ithelp.ithome.com.tw/upload/images/20200919/201303037f4YJzBu2L.png

預設資料

public void CreateList()
{
    _leftList = new List<string>
    {
        "農夫","狼","羊","菜"
    };
    _rightList = new List<string>();
}

public void SetListBoxDataSource()
{
    listBox1.SelectionMode = SelectionMode.One;
    listBox2.SelectionMode = SelectionMode.One;
}

移動判斷(左->右)

private void button1_Click(object sender, EventArgs e)
{
    if (listBox1.SelectedItem.ToString() != "農夫")
    {
        string item = listBox1.SelectedItem.ToString();
        _leftList.Remove("農夫");
        _rightList.Add("農夫");
        _leftList.Remove(item);
        _rightList.Add(item);
        SetListData();
        Check();

    }
    else
    {
        _leftList.Remove("農夫");
        _rightList.Add("農夫");
        SetListData();
        Check();
    }
}

設定資料

public void SetListData()
{
    listBox1.DataSource = new List<string>();
    listBox2.DataSource = new List<string>();
    listBox1.DataSource = _leftList;
    listBox2.DataSource = _rightList;
}

邏輯判斷

private void Check()
{
    if (_leftList.Count == 0)
    {
        MessageBox.Show("win");
    }
    else
    {
        if (_leftList.Contains("農夫") == false)
        {
            if (_leftList.Contains("狼") && _leftList.Contains("羊"))
            {
                MessageBox.Show("狼吃羊");
                CreateList();
                SetListData();
            }
            else if (_leftList.Contains("羊") && _leftList.Contains("菜"))
            {
                MessageBox.Show("羊吃菜");
                CreateList();
                SetListData();
            }
        }
        if (_rightList.Contains("農夫") == false)
        {
            if (_rightList.Contains("狼") && _rightList.Contains("羊"))
            {
                MessageBox.Show("狼吃羊");
                CreateList();
                SetListData();
            }
            else if (_rightList.Contains("羊") && _rightList.Contains("菜"))
            {
                MessageBox.Show("羊吃菜");
                CreateList();
                SetListData();
            }
        }
    }
}


羊-狼-羊-菜-羊

鐵人還沒一半艾利森就覺得累了啦...

/images/emoticon/emoticon28.gif


上一篇
C sharp 學習筆記 (2/3)
下一篇
Front-end 學習筆記(1/3)
系列文
艾利森踏上工程師之路的心路歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言