View Single Post
  #2  
Old 15-06-2012, 11:40
nickykiet83 nickykiet83 vẫn chưa có mặt trong diễn đàn
Thành Viên Mới
 
Tham gia ngày: Dec 2010
Bài gởi: 16
Thanks: 9
Thanked 3 Times in 3 Posts
Game Đổ Xúc Xắc - PHẠM QUANG ANH KIỆT
Mô tả yêu cầu:
1 - Trò chơi có 2 xúc xắc
2 - Mỗi lần chạy ứng dụng, cho người chơi 100 điểm
3 - Người chơi có thể chọn Tài hoặc Xỉu (Tài <=6, Xỉu >6). Rồi click nút Đổ xúc xắc
4 - Người chơi cũng có thể cược thêm số điểm.
5 - Nếu thắng, người chơi được cộng thêm 20 điểm và số điểm đã cược thêm. Nếu thua, bị trừ 20 điểm và số điểm đã cược thêm
6 - Nếu tổng điểm của người chơi <= 0 điểm, hiện thông báo "Bạn không còn đủ điểm để tiếp tục chơi" và không được Đổ xúc xắc nữa.

Hiện thực chuơng trình:
- Chuơng trình có sử dụng đối tượng NSTimer để quay xúc xắc. Mỗi lần Timer chạy sẽ đổi hình xúc xắc ngẫu nhiên.

1) Thiết kế giao diện và ánh xạ các layout + action như sau:



*Ghi chú: Biến int Diem là biến toàn cục. Biến này dùng để tạo số điểm thắng/thua mỗi lần quay xúc xắc. Theo yêu cầu là 20 điểm cho mỗi lần quay.

2) Viết code như sau tại file .m

PHP Code:

@implementation GameDoXucXacViewController

//biến static (tĩnh) dùng để Stop timer lại. Vì Timer mỗi lần
//chạy lại hàm QuayXucXac thì biến này sẽ bị reset lại = 0 
//nên phải dùng biến tĩnh để không bị thay đổi giá trị.
static int count;

- (
void)viewDidLoad
{
    [
super viewDidLoad];
    
TongDiem 100;
    
Diem 20;
    
lblTongDiem.text = [NSString stringWithFormat:@"%i",TongDiem];
    
lblKetQua.text = @"";
    
imgViewKetQua.hidden YES;
    
sliderDiemCuoc.minimumValue=0;
    
sliderDiemCuoc.maximumValue=100;
    
sliderDiemCuoc.value =0;
    
lblDiemCuoc.text = @"0";
}

[
B]//hàm xử lý sự kiện Button Đổ xúc xắc được Touch[/B]
- (IBAction)btnDoXucXac:(id)sender {
    if(
TongDiem <=0)
    {
        
UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Thông Báo"
                                                      
message:@"Bạn không còn đủ điểm để tiếp tục chơi" 
                                                     
delegate:self
                                            cancelButtonTitle
:@"OK"
                                            
otherButtonTitles:nil];
        [
alert show];
        [
alert release];
        return;
    }
    
    
//Disable Slider Điểm Cược khi bắt đầu quay xúc xắc
    
sliderDiemCuoc.enabled NO;
    
imgViewKetQua.hidden YES;
    
lblKetQua.hidden YES;
    
switchTaiXiu.enabled NO;
    

    
timer = [NSTimer scheduledTimerWithTimeInterval:0.1
                                             target
:self
                                           selector
:@selector(QuayXucXacuserInfo:nil
                                             repeats
:YES];
//Đối tượng Timer sẽ gọi hàm QuayXucXac trong khoảng thời gian: 0.1 giây

}

-(
void)QuayXucXac{
    
//Disable Slider Điểm Cược khi bắt đầu quay xúc xắc
    
sliderDiemCuoc.enabled NO;
    
//biến dùng để lấy tên hình
    
NSString *imgxx;
    
//biến lưu số phát sinh ngẫu nhiên
    
int intrandom1,intrandom2;
    
    
//phát sinh số ngẫu nhiên từ 1->6
    
intrandom1 arc4random()%6+1;
    
imgxx = [NSString stringWithFormat:@"%i",intrandom1];
    
//set tên hình vào ImageView Xúc xắc 1
    
imgViewXucXac1.image = [UIImage imageNamed:imgxx];
    
    
//phát sinh số ngẫu nhiên từ 1->6
    
intrandom2 arc4random()%6+1;
    
    
imgxx = [NSString stringWithFormat:@"%i",intrandom2];
    
//set tên hình vào ImageView Xúc xắc 2
    
imgViewXucXac2.image =[UIImage imageNamed:imgxx];
    
     
//count tăng đến 40 thì ngưng timer
    
if (count>=40)
    {
        
//reset lai bien count;
        
count 0;

        [
timer invalidate];
        
int soDiem;
        
soDiem intrandom1 intrandom2;
        
int diemcuoc = (int)sliderDiemCuoc.value;
        
        
//tai <= 6
        
imgViewKetQua.hidden NO;
        
lblKetQua.hidden NO;
        if(
switchTaiXiu.on)
        {
            if(
soDiem<=6)
            {
                
lblKetQua.text = @"WIN: +20 Điểm";
                
imgViewKetQua.image = [UIImage imageNamed:@"emoticon"];
                
                
//Tổng Điểm = Điểm thắng/thua +/- Điểm cược
                
TongDiem TongDiem + (Diem diemcuoc);
            }
            else {
                
lblKetQua.text = @"LOSE: -20 Điểm";
                
imgViewKetQua.image = [UIImage imageNamed:@"lose"];
             
                
//Tổng Điểm = Điểm thắng/thua +/- Điểm cược
                
TongDiem TongDiem - (Diem diemcuoc);         
            }
        }
        else {
        
//xiu >=6
            
if(soDiem>=6)
            {
                
lblKetQua.text = @"WIN: +20 Điểm";
                
imgViewKetQua.image = [UIImage imageNamed:@"emoticon"];
                
                
//Tổng Điểm = Điểm thắng/thua +/- Điểm cược
                
TongDiem TongDiem + (Diem diemcuoc);;
            }
            else {
                
lblKetQua.text = @"LOSE: -20 Điểm";
                
imgViewKetQua.image = [UIImage imageNamed:@"lose"];
                
                
//Tổng Điểm = Điểm thắng/thua +/- Điểm cược
                
TongDiem TongDiem - (Diem diemcuoc);
            }
        }
        
    
lblTongDiem.text = [NSString stringWithFormat:@"%d",TongDiem];
        
//Enable Slider Điểm Cược khi kết thúc quay xúc xắc
        
sliderDiemCuoc.enabled YES;
        
switchTaiXiu.enabled YES;
    }
    
count ++;

Kết quả khi chạy ứng dụng:








thay đổi nội dung bởi: nickykiet83, 15-06-2012 lúc 15:49
Trả Lời Với Trích Dẫn
Những người sau đây đã gửi lời cảm ơn nickykiet83 vì bài viết hữu ích này: