// 뱀 사다리 void Snakeladder(Land ob, int i, int j, ref int location) { // P1 if (player_turn == true) { switch (location) // 뱀사다리는 미리 위치를 정함 { case 5: MessageBox.Show("5번 ---> 7번", "뱀사다리"); if (dataGridView1.Rows[i].Cells[j].Value.Equals(l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent) + "★")) { move_empty(i, j); dataGridView1.Rows[1].Cells[3].Value += "★"; } location1 = 7; if (ob.Host == 2) { Land_Arrival(l[1, 3]); } break; case 11: MessageBox.Show("11번 ---> 21번", "뱀사다리"); if (dataGridView1.Rows[i].Cells[j].Value.Equals(l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent) + "★")) { move_empty(i, j); dataGridView1.Rows[4].Cells[0].Value += "★"; } location1 = 21; if (ob.Host == 2) { Land_Arrival(l[4, 0]); } break; case 22: MessageBox.Show("22번 ---> 16번", "뱀사다리"); if (dataGridView1.Rows[i].Cells[j].Value.Equals(l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent) + "★")) { move_empty(i, j); dataGridView1.Rows[3].Cells[4].Value += "★"; } location1 = 16; if (ob.Host == 2) { Land_Arrival(l[3, 4]); } break; } } // P2 else { switch (location) { case 5: MessageBox.Show("5번 ---> 7번", "뱀사다리"); if (dataGridView1.Rows[i].Cells[j].Value.Equals(l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent) + "☆")) { move_empty(i, j); dataGridView1.Rows[1].Cells[3].Value += "☆"; } location2 = 7; if (ob.Host == 1) { Land_Arrival(l[1, 3]); } break; case 11: MessageBox.Show("11번 ---> 21번", "뱀사다리"); if (dataGridView1.Rows[i].Cells[j].Value.Equals(l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent) + "☆")) { move_empty(i, j); dataGridView1.Rows[4].Cells[0].Value += "☆"; } location2 = 21; if (ob.Host == 1) { Land_Arrival(l[4, 0]); } break; case 22: MessageBox.Show("22번 ---> 16번", "뱀사다리"); if (dataGridView1.Rows[i].Cells[j].Value.Equals(l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent) + "☆")) { move_empty(i, j); dataGridView1.Rows[3].Cells[4].Value += "☆"; } location2 = 16; if (ob.Host == 1) { Land_Arrival(l[3, 4]); } break; } } textBoxP1_Location.ToString(); textBoxP2_Location.ToString(); }
//// 프로그램 실행화면 private void Form1_Load(object sender, EventArgs e) { Land.Land_Load(l); // 토지 정보 윈도우에 가져오기 // 행과 열 생성 for (int i = 0; i < 5; i++) { dataGridView1.Columns.Add("", ""); dataGridView1.Rows.Add(); } // 열 크기 for (int nX = 0; nX < dataGridView1.ColumnCount; nX++) { dataGridView1.Columns[nX].Width = 100; } // 행 크기 for (int nY = 0; nY < dataGridView1.RowCount; nY++) { dataGridView1.Rows[nY].Height = 100; } // 행, 열 번호 지정 int count = 0; for (int i = 0; i < dataGridView1.ColumnCount; i++) { dataGridView1.Columns[i].DefaultCellStyle.WrapMode = DataGridViewTriState.True; } for (int i = 0; i < dataGridView1.RowCount; i++) { for (int j = 0; j < dataGridView1.ColumnCount; j++) { if (i % 2 == 0) { switch (i) { case 0: num_land[i, j] = j + 1; dataGridView1.Rows[i].Cells[j].Value = l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent); break; case 2: num_land[i, j] = j + 11; dataGridView1.Rows[i].Cells[j].Value = l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent); break; case 4: num_land[i, j] = j + 21; dataGridView1.Rows[i].Cells[j].Value = l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent); break; } } else { switch (i) { case 1: num_land[i, j] = 10 - j; dataGridView1.Rows[i].Cells[j].Value = l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent); break; case 3: num_land[i, j] = 20 - j; dataGridView1.Rows[i].Cells[j].Value = l[i, j].Land_Inform(num_land[i, j], l[i, j].Name + "\n", l[i, j].Price, l[i, j].Rent); break; } } count++; } buttonUpgrade.Enabled = false; // 지역이 클릭될 때까지 비활성화 Land_Information(); // 땅 정보 카드 초기화 dataGridView1.ClearSelection(); // 초반 1번 칸 선택 방지 dataGridView1.MultiSelect = false; // 다중 선택 방지 textBoxTurn.Text = "P1"; } }
// 토지 업그레이드 private void Land_Upgrade(Land ob) { // P1 if (player_turn) { switch (ob.Level) // Lv0=기본, Lv1>=업그레이드 { case 0: ob.Level++; ob.New_Price += ob.Rent + 5; money1 -= ob.Upgrade_pay; break; case 1: ob.Level++; ob.New_Price += 5; money1 -= ob.Upgrade_pay; break; case 2: ob.Level++; ob.New_Price += 5; money1 -= ob.Upgrade_pay; break; case 3: ob.Level++; ob.New_Price += 15; ob.Upgrade_pay = 40; money1 -= ob.Upgrade_pay; break; case 4: MessageBox.Show("더 이상 업그레이드할 수 없습니다.", "만렙"); // 호텔 break; } } else { switch (ob.Level) { case 0: ob.Level++; ob.New_Price += ob.Rent + 5; money2 -= ob.Upgrade_pay; break; case 1: ob.Level++; ob.New_Price += 5; money2 -= ob.Upgrade_pay; break; case 2: ob.Level++; ob.New_Price += 5; money2 -= ob.Upgrade_pay; break; case 3: ob.Level++; ob.New_Price += 15; ob.Upgrade_pay = 40; money2 -= ob.Upgrade_pay; break; case 4: MessageBox.Show("더 이상 업그레이드할 수 없습니다.", "만렙"); break; } } textBoxP1_Money.Text = money1.ToString(); textBoxP2_Money.Text = money2.ToString(); buttonUpgrade.Enabled = false; // 업그레이드를 한 번 누르면 비활성화 }
//// 땅에 도착 void Land_Arrival(Land ob) { switch (ob.Host) { // 주인 없는 땅에 도착 case 0: DialogResult res1 = MessageBox.Show( "땅을 사시겠습니까?", "주인 없는 땅에 도착", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (res1 == DialogResult.Yes) { if (player_turn == true) { if (money1 >= ob.Price) { money1 -= ob.Price; ob.Host = 1; Land1++; dataGridView1.Rows[ob.Row].Cells[ob.Cell].Style.BackColor = Color.LightBlue; MessageBox.Show("땅을 구입하였습니다.", "구입"); Bingo(player_turn); // (체크) 빙고를 완성 } else { MessageBox.Show("돈이 부족하여 땅을 구입할 수 없습니다.", "구입 실패"); } } else { if (money2 >= ob.Price) { money2 -= ob.Price; ob.Host = 2; Land2++; dataGridView1.Rows[ob.Row].Cells[ob.Cell].Style.BackColor = Color.Yellow; MessageBox.Show("땅을 구입하였습니다.", "구입"); Bingo(player_turn); // (체크) 빙고를 완성 } else { MessageBox.Show("돈이 부족하여 땅을 구입할 수 없습니다.", "구입 실패"); } } textBoxP2_Money.Text = money2.ToString(); } break; // P1이 땅에 도착 case 1: if (!player_turn) { DialogResult res2 = MessageBox.Show( "임대료를 지불합니다.", "P1의 땅에 도착"); // 0단계는 기본 임대료 if (ob.Level == 0) { if (money2 >= ob.Rent) { money2 -= ob.Rent; } else { MessageBox.Show("P2의 승리입니다.", "임대료 지불 불가"); Close(); } } // 1단계 이상 업그레이드 임대료 else { if (money2 >= ob.New_Price) { money2 -= ob.New_Price; } else { MessageBox.Show("P2의 승리입니다.", "임대료 지불 불가"); Close(); } } } break; // P2의 땅에 도착 case 2: if (player_turn) { DialogResult res2 = MessageBox.Show( "임대료를 지불합니다.", "P1의 땅에 도착"); if (ob.Level == 0) { if (money1 >= ob.Rent) { money1 -= ob.Rent; } else { MessageBox.Show("P2의 승리입니다.", "임대료 지불 불가"); Close(); } } else { if (money1 >= ob.New_Price) { money1 -= ob.New_Price; } else { MessageBox.Show("P2의 승리입니다.", "임대료 지불 불가"); Close(); } } } break; } Soldout(); // (체크) 땅을 모두 구입 }