01/10/2018, 15:02

Nhờ các anh chị hướng dẫn em đoạn code C# về xúc sắc với ạ

 class NguoiChoi
    {
        public string ten;
        public int diem;
        
        public string Ten
        {
            get { return ten; }
            set
            {
                if (value != "")
                    ten = value;
            }
        }

        public int Diem
        {
            get { return diem; }
            set
            {
                if (value > 0)
                    diem = value;
            }

        }

        public NguoiChoi()
        {
            diem = 0;
        }

        public void GieoXucXac(XucXac xucxac)
        {
            Console.Write("> Nhan Enter...");
            Console.ReadLine();
            xucxac.SinhGiaTri();
            Diem += xucxac.GiaTri;
            Console.WriteLine("---Diem hien tai = {0}", Diem);
        }

        public void Input()
        {
            Console.Write("Nhap ten nguoi choi: ");
            Ten = Console.ReadLine();
        }
 class XucXac
    {
        private int giaTri;
        public int GiaTri { get; set; }

        public XucXac()
        {
            GiaTri = 0;
        }

        public XucXac(int giaTri)
        {
            GiaTri = giaTri;
        }

        public void SinhGiaTri()
        {
            Random random = new Random();
            GiaTri = random.Next(1, 7);
        }
    }
}
 class TranDau
    {
        private XucXac xucXac;
        private NguoiChoi nguoiChoi1;
        private NguoiChoi nguoiChoi2;
        private int soVong;
        private NguoiChoi nguoiThang;

        public XucXac XucXac { get; set; }
        public NguoiChoi NguoiChoi1 { get; set; }
        public NguoiChoi NguoiChoi2 { get; set; }
        public NguoiChoi NguoiThang { get; set; }
        public int SoVong
        {
            get { return soVong; }
            set 
            {
                while (value <= 0)
                {
                    Console.Write("So vong phai > 0. De nghi nhap lai so vong: ");
                    value = Convert.ToInt32(Console.ReadLine());
                }
                soVong = value;
            }
        }

        public TranDau()
        {
            XucXac = new XucXac();
        }

        public void BatDau()
        {
            Console.WriteLine("Tran dau bat dau: ");
            for (int i = 1; i <= SoVong; i++)
            {
                Console.WriteLine("****Vong {0}*****", i);
                Console.WriteLine("Nguoi choi {0} gieo xuc xac", NguoiChoi1.Ten);
                NguoiChoi1.GieoXucXac(XucXac);
                Console.WriteLine("Nguoi choi {0} gieo xuc xac", NguoiChoi2.Ten);
                NguoiChoi2.GieoXucXac(XucXac);
            }
        }

        public void KetThuc()
        {
            int diem1 = NguoiChoi1.Diem;
            int diem2 = NguoiChoi2.Diem;
            if (diem1 > diem2)
            {
                NguoiThang = NguoiChoi1;
            }
            if (diem2 > diem1)
            {
                NguoiThang = NguoiChoi2;
            }
        }

        public void HienThi()
        {
            Console.WriteLine("*****Ket qua tran dau****");
            Console.WriteLine("- Diem cua {0}: {1}", NguoiChoi1.Ten, NguoiChoi1.Diem);
            Console.WriteLine("- Diem cua {0}: {1}", NguoiChoi2.Ten, NguoiChoi2.Diem);
            if (NguoiThang != null)
            {
                Console.WriteLine("Nguoi thang: {0}", NguoiThang.Ten);
            }
            else
            {
                Console.WriteLine("Tran dau hoa!!!!");
            }
        }

        public void Input()
        {
            Console.WriteLine("Nhap nguoi choi thu 1");
            NguoiChoi1 = new NguoiChoi();
            NguoiChoi1.Input();

            Console.WriteLine("Nhap nguoi choi thu 2");
            NguoiChoi2 = new NguoiChoi();
            NguoiChoi2.Input();

            Console.Write("Nhap so vong thi dau: ");
            SoVong = Convert.ToInt32(Console.ReadLine());

        }

        public void ThucHienTranDau()
        {
            BatDau();
            KetThuc();
            HienThi();
        }

 static void Main(string[] args)
        {
            TranDau t = new TranDau();
            t.Input();
            t.ThucHienTranDau();
        }

Giáo viên của em yêu cầu viết thêm thuộc tính số bàn thắng ghi lại số bàn thắng Cho biết số ván đấu (>2), nếu người chơi nào thắng quá bán đầu tiên thì sẽ thắng
•VD: Giả sử 2 người chơi phải chơi 3 ván đấu. Nếu người chơi nào thắng trước 2 ván thì người chơi đó thắng cả trận đấu Nếu hòa thì tính điểm để kết luận người thắng.
Em code xong còn câu này mà không biết làm như thế nào. Mọi người giúp e với ạ, em cảm ơn.

Trần Linh viết 17:16 ngày 01/10/2018

Bạn (cũng ko bit phải xưng hô thế nào cho phải) có thể nói rõ ràng câu hỏi hơn được không? Mình đọc vào không thông.
Vs lại mình thấy code nó hơi rườm rà, nhiều chỗ không cần thiết:

  • Nếu đã có biến XucXac với thuộc tính get ; set; mặc định thì cần gì phải gọi thêm biến xucXac?
  • Tại cái hàm GieoXucXac() thì nên khởi tạo XucXac trong đó luôn :))
    Mình nghĩ bạn không cần nhất thiết phải tách 1 cái tành nhiều hàm void như vậy (nghĩ thế thôi ). Nên gộp BatDau và KetThuc để tiện cho việc xử lý kết quả thắng thua :)) (có thể dùng return; để dừng hàm void)
Evil Artist viết 17:02 ngày 01/10/2018

Thực ra yêu cầu rất đơn giản,

  1. Thêm 1 trường public tên là sotranthang
  2. Reset sotranthang = 0 trước khi TranDau.Batdau
  3. Sau mỗi lượt NguoiChoi.Gieoxucxac Kiểm tra người chơi nào cao điểm hơn thi sotranthang của người đó ++
  4. Sau khi Trandau.Ketthuc thì kiểm tra sotranthang của Nguoichoi nào cao hơn thì in ra.

Cách hiểu thứ 2:

TranDau tương đương với khái niệm ván đấu

  1. Cần nhập sovandau ở hàm main.
  2. Thêm 1 trường public tên là sotranthang
  3. Reset sotranthang = 0
  4. TanDaubatdau
  5. Sau mỗi lượt Trandau.Ketthuc Kiểm tra người chơi nào cao điểm hơn thi sotranthang của người đó ++
  6. Lặp lại 4-5 sovandau lần
  7. Kiểm tra sau sovandau ai có sotranthang cao hơn thì in ra. (Thêm method bên Trandau)

Dù cách nào thì cũng khá đơn giản bạn nên giành 1 chút thời gian tư duy và viết code thay vì chạy Grab.

Hạnh Nguyễn viết 17:02 ngày 01/10/2018

Mình mới năm 1 và giáo viên yêu cầu làm theo từng bươc từng bước như thế bạn.

Hạnh Nguyễn viết 17:02 ngày 01/10/2018

Với bạn đơn giản nhưng với mình nó lại không đơn giản vả lại tư duy ở mỗi người mỗi khác nhau mà bạn. Những cái mình không biết thì mới nhờ mọi người hướng dẫn giúp đỡ, mình nghĩ có lẽ bạn hơi nặng lời với mình quá. Cảm ơn vì hướng dẫn của bạn

Trần Linh viết 17:09 ngày 01/10/2018

Tức là thế này nhỉ:

  • số ván đấu > 2; nếu thắng trên 1/2 số ván đấu thì thắng cuộc.
  • nếu số ván chia hết cho 2; 2 bên hòa nhau về số ván; tính điểm.
    ???
    (Cho e hỏi ngu! Số ván = nhau, số điểm = nhau; thế làm sao để tính thắng thua )???
Hạnh Nguyễn viết 17:15 ngày 01/10/2018

Kết luận là cả hai hòa nhau bạn

Trần Linh viết 17:16 ngày 01/10/2018
  • Như em đã nói ở trên, phần void BatDau và KetThuc sẽ gộp làm 1. Trong hàm mới ta định nghĩa 2 biến số vòng thắng, trong vòng lặp for ta sẽ cho 1 hàm if xử lý thắng thua (kiểu như x>soVong thì break rồi công bố kết quả, còn i==soVong thì so sánh kết quả chẳng hạn)
  • Trong diễn đàn không khuyến khích việc hỏi bài nên em chỉ có thể gợi ý đến đây! Chị cố gắng suy nghĩ nhé! Tự mình nghĩ ra thì ms thú vị! Có gì chị có thể lên discuss của daynhauhoc cùng thảo luận vs mọi người!
Bài liên quan
0