Monthly Archives: December 2012

Chương trình chạy nhạc (Playing Song)

Một chương trình mà không có nhạc hay âm thanh vào thì quả thật chương trình rất nhàm chán và buồn tẻ.

Sau đây, tôi giới thiệu cho các bạn cách viết lệnh để chương trình chạy có tiếng động để tránh chương trình quá nhàm chán.

Đầu tiên chúng ta phải thêm 2 thư viện (framework) về âm thanh của Xcode vào chương trình để chạy chương trình. Các bạn vào phần thông tin của chương trình. Chọn tab Build Phase sau đó vào Link Binary with Library sau đó add 2 framework

AudioToolbox/AudioToolbox

AVFoundation/AVFoundation

Sau đó chúng ta tạo một button để chạy file âm thanh và đừng quên add file nhạc mà các bạn cần chạy vào nữa.

Đây là file header (.h)

#import <UIKit/UIKit.h>

#import <AudioToolbox/AudioToolbox.h>

#import <AVFoundation/AVFoundation.h>

 

@interface MainMindViewController : UIViewController<AVAudioPlayerDelegate>{

    SystemSoundID burpSoundID;

    AVAudioPlayer *player;

}

 

– (IBAction)actPlayingSound:(id)sender;

@end

Còn đây là file main (.m):

#import “MainMindViewController.h”

 

@interface MainMindViewController ()

 

@end

 

@implementation MainMindViewController

 

– (void)viewDidLoad

{

    [super viewDidLoad];

AudioServicesCreateSystemSoundID((CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@”sboom” ofType:@”wav”]]), &burpSoundID);

AudioServicesCreateSystemSoundID((CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@”sboom” ofType:@”wav”]]), &burpSoundID);

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]

pathForResource:@”MoiHongXaoXuyen”

ofType:@”mp3″]];

NSError *error;

player = [[AVAudioPlayer alloc]

initWithContentsOfURL:url

error:&error];

if (error)

{

NSLog(@”Error in audioPlayer: %@”,

[error localizedDescription]);

} else {

//audioPlayer.delegate = self;

[player prepareToPlay];

}

player.numberOfLoops = -1;

}

 

– (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

}

 

– (IBAction)actPlayingSound:(id)sender {

    AudioServicesPlaySystemSound(burpSoundID);

}

@end

Thế là xong, giờ thì click vào button là nghe tiếng ngay.

Source Code:

Google Drive: https://docs.google.com/file/d/0B3v7a0gMgVkBTmp2SE5NUlJOd3c/edit

Mediafire: http://www.mediafire.com/?4walrprfviv9abb

Product: LapKan Company Product (LK)
Coder: Huygamer
Blog: huygamer.wordpress.com

Chương trình bấm giờ (Stopping Time)

Trong một game hay trong những chương trình thường có những giới hạn dành cho việc thi hành cái gì đó. Ví dụ như trong một màn chơi thường phải có thời gian để hạn chế một màn không quá dài cũng như ghi lại thành tích của mỗi người chơi.

Chương trình dưới đây giúp cho bạn có thể bấm thời gian và theo dõi thời gian trôi qua khi người đó bắt đầu chơi mộ màn của game.

Đầu tiên chúng ta có 2 nút (Button) để bắt đầu bấm giờ và ngừng việc bấm giờ lại:

* Connect chúng với IBAction trong file .h

– (IBAction)actStartTiming:(id)sender;

– (IBAction)actStopTiming:(id)sender;

và một nhãn (label) dùng để theo dõi thời gian đang chạy:

@property (strong, nonatomic) IBOutlet UILabel *lblDisplayTiming;

2 biến toàn cục để ghi nhận sự thay đổi và cho chạy thời gian

{

    NSTimer *stopWatchTimer;

    NSDate *startDate;

}

Thế là xong file header (.h) giờ tới file chạy .m

Đây là code cho nút (button) bắt đầu đếm thời gian:

– (IBAction)actStartTiming:(id)sender {

    startDate = [NSDate date];

    stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];

}

Đây là cho phần dừng thời gian:

– (IBAction)actStopTiming:(id)sender {

    [stopWatchTimer invalidate];

    stopWatchTimer = nil;

    [self updateTimer];

}

Đây là cho phần update thời gian

– (void) updateTimer{

    NSDate *currentDate = [NSDate date];

    NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];

   

    NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];

    _lblTesting.text = [timerDate description];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat:@”HH:mm:ss.S”];

    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];

    NSString *timeString = [dateFormatter stringFromDate:timerDate];

    _lblDisplayTiming.text = timeString;    

}

Đó là toàn bộ chương trình để có thể theo dõi thời gian trong game.

Đây là Source Code dành cho những ai không làm được:

http://www.mediafire.com/?a4r5i69oq2dpqos

Product: LapKan Company Product (LK)
Coder: Huygamer
Blog: huygamer.wordpress.com

Khởi động lập trình Iphone

[B]I. Thông tin chung:[/B]
Bái này sẽ tóm gọn cách để học lập trình ios theo từng bước và hướng dẫn chi tiết các bước để học lập trình ios một cách chi tiết nhất.
Câu đầu tiên bạn phải nhớ và hiểu rằng: ”Lập trình trên IOS là dễ dàng, chỉ có điều nó khác biệt so với những thức chúng ta đã làm nên nó trở nên khó”.
Những người thấy lập trình IOS khó là do sự tiết kiệm không mua máy tính Mac, xài phần mềm lậu lâu ngày quen tay. Thử hỏi, nếu phải trả tiền để có các công cụ thì các lập trình viên sẽ phải bỏ ra bao nhiêu tiền cho mỗi ngôn ngữ?
* IOS là miễn phí sau khi mua máy Mac (iMac, Macbook, Macbook Pro,…)
* .Net là hơn 10.000 $ vì phải tính tới đủ các thứ như hệ điều hành, IDE, các phần phụ trợ
* PHP cũng phải tốn mấy trăm đô mua Dreamweaver hay bất cứ thứ gì giúp các bạn bắt đầu với lập trình

=> Vậy với một thứ miễn phí và một cái chi phí cao ngất, bạn thích cái nào?
[B]II. Nội dung chính:[/B]
* Thông tin chung về hệ sinh thái Apple:
– Làm việc với Apple hay chính xác hơn vơi IOS thì số tlượng những sản phẩm chúng ta cần nhắm tới rất nhỏ. Bao gồm:
+ Ipod
+ Iphone
+ Ipad
=> Số lượng những sản phẩm khá là nhỏ le

[B]1. Bước chuẩn bị ban đầu[/B]
Cách học thì theo tôi cách học từ đầu là bạn hãy tập trung làm những cái đơn giản nhất:
* Đầu tiên hãy ghi lại những ý tưởng và mục tiêu lại trên một tài liệu nào đó trong quá trình bạn học nhưng khoan hãy bắt tay và làm nó vội
=> Những ý tưởng này của bạn sẽ chính là mục tiêu của bạn sau khi đọc và thực hành xong eBook.
Vì thực tế có một điểm mà ít ai biết được ngay từ đầu là các cuốn eBook không đưa ra đầy đủ những kiến thức cần thiết mà chứa tất cả những kiến thức cơ bản nhất mà từ đó bạn có thể hoàn thành được ý tưởng của bạn.

– Hầu hết mọi người sau khi hoàn tất một cuốn eBook sẽ không biết phải làm gì tiếp nữa. Đợi đến lúc đó mới nghĩ ra ý tưởng thì hứng thú sẽ cạn kiệt dần trừ phi hứng thú quá cao thì ý tưởng ra xong trước khi nó giảm hết có thể tìm ra được ý tưởng để phát triển tiếp được.
– Cho nên, quá trình làm việc của tôi đi kèm theo việc suy nghĩ ra ý tưởng theo kèm ngay từ lúc bắt đầu. Sau khi bạn có đủ kiến thức là bạn có thể bắt đầu luôn.

[B]2. Luyện căn bản với Ebook:[/B]
– Cầm một cuốn eBook ra để luyện trước
+ Theo kinh nghiệm thì nên sử dụng sách của Apress vì các hướng dẫn rất đầy đủ chi tiết và tác giả không ngại việc nhắc lại những kiến thức cũ và bổ sung thêm khi bạn tới những cột mốc như vậy

+ Sách của Apress còn có thêm mã nguồn rất đầy đủ và chi tiết
=> Hãy luyện hết một cuốn (Chừng 24 chương cho những phần căn bản nhất) (Sách thì bên phần eBook của website)
=> Lúc này bạn đã có đầy đủ kiến thức cơ bản để hiểu được một chương trình viết gì, đây là lúc tham khảo 1 chương trình thực tế
– Tuy nhiên, sách của Apress có kuyết điểm là không chỉ cách tạo database (Array, pList) nên việc sử dụng nó hầu như bạn phải sử dụng đúng database của Apress mới chạy được

[B]3. Khởi động với chương trình tương tự:[/B]
– Sau đó hãy kiếm một chương trình trên Internet có cấu trúc gần giống nhất với chương trình bạn muốn viết
– Dựa vào cấu trúc đó viết lại chương trình bạn muốn
– Sau đó phát triển nó lên
=> Cách làm này giúp bạn có kiến thức và sản phẩm theo kèm rất nhanh chóng
=> Sau khi được chừng 3 chương trình thì đó là lúc bạn đã đầy đủ kiến thức có thể chiến ở bất cứ nơi đâu

– Chương trình này có thể sẽ là chương trình chính của bạn trong tương lai, hãy làm nó cho thật tốt vì lợi ích của nó là rất lớn. Những gì cần tham khảo thường sẽ tới từ chương trình này.
– Ngoài ra, nếu bạn muốn xin việc ở một công ty chuyên về App thì việc show ra các chương trình kiểu mẫu thế này sẽ được điểm rất cao.

[B]4. Phát triển chương trình căn bản:[/B]
– Mỗi chương trình luôn có phần chính là chức năng nòng cốt. Chức năng này cần làm tốt trước tiên. Sau đó mới tính tới những phần phụ theo kèm:
+ Giao diện
+ Hiệu ứng trong chương trình
+ Hình ảnh mô tả
+ Luồng đi hợp lý.
– Chức năng chính của chương trình luôn luôn phải chạy tốt, nếu không chạy tốt thì bạn sẽ gặp rắc rối lớn và giảm uy tín rất nhiều.
– Chính vì vậy đầu tiên, bạn cần phát triển chương trình làm tốt nhất chức năng chính của nó.

[B]4. Nâng cấp chương trình:[/B]
– Đầu tiên phải lưu ý đến phần giao diện
+ Intro View là thứ đầu tiên bạn cần quan tâm vì đây là screen đầu tiên mà người sử dụng nhìn thấy và là ấn tượng ban đầu để họ có tiếp tục sử dụng hay không?
+ Những chức năng mới nên làm trên những view mới còn vẫn muốn update trên view chính thì việc bạn nên chắc chắn là tạo một bản sao lưu ở chỗ khác hoặc tạo một ảnh bản sao (SnapShot) của chương trình để có thể quay ngược trở lại phiên bản làm việc được gần nhất.
[B]+ Lưu ý: [/B]Lới khuyên là nên sử dụng chức năng SnapShot của Xcode. Chức năng này rất mạnh và chạy cực nhanh không tốn quá nhiều thời gian lại có thể điều khiển (control) được những bản sao lưu và có thể trở lại bất cứ lúc nào. Đây là một điểm vượt trội của Xcode so với những IDE khác.

[B]III. Kết luận:[/B]
Đây là phần chuẩn bị để bắt đầu lập trình với Iphone.
Phần này còn cung cấp cho bạn một cái nhìn tổng quát và những mục tiêu trong tương lai.

Reindent Code trong IDE

I. Thông tin chung:

– Trong lập trình để làm đẹp code (Các tab để chia lại từng dòng code thuộc các block nào) luôn được các IDE hỗ trợ triệt để. Tuy mỗi IDE có cách làm đẹp lại code khác nhau nhưng luôn luôn được hỗ trợ.

– Chức năng này trong thuật ngữ của dân lập trình là reindent (Nhớ để mà tìm kiếm trên Google cho dễ, chứ viết làm đẹp code nó không có ra đâu ^.^)

II. Nội dung chính:

* Dùng phím tắt:
– Eclipse:
Ctrl + Shift + F

– Netbean:

Alt + Shift + F (trên Win)

Ctrl + Shift + F (trên Mac)

– Visual Studio:

Ctrl + K, D

– Xcode:

Ctrl + I (Sẽ là  ^ + I nếu theo cách viết của Mac)

(Ctrl + Click) -> Structure -> Reindent

* Dùng chức năng tự động indent của IDE:
– Cut (Ctrl + X) sau đó paste (Ctrl + V) thì IDE sẽ tự động add indent lại toàn bộ những gì đã paste hơi phiền phức nhưng được việc
– Xóa } ở dòng cuối cùng sau đó thêm vào lại thì IDE cũng tự động làm việc này

III. Kết luận:

– Đây là phương pháp làm cho chương trình trở nên mạnh mẽ hơn nhiều. Code được làm đẹp sẽ dễ dàng phân biệt sự phụ thuộc và khả năng tìm lỗi sẽ dễ dàng hơn rất nhiều so với việc nhìn một đống code không được sắp xếp bài bản.

Các code thông dụng trong lập trình IOS

I. Thông tin chung:
– Code thông dụng của các controller chính
– Một điều cần biết thêm là hầu hết những thuộc tính này có thể được điều chỉnh trên IB (Interface Builder) của Xcode. Những gì tôi liệt kê ở đây chỉ là điều chỉnh những thứ này bằng code để thay đổi cách thể hiện của chúng trên giao diện theo ý của chúng ta.
– Ngoài ra, mỗi controller còn có rất nhiều thuộc tính khác phụ thuộc vào mục đích của người lập trình trong những trường hợp đặc biệt còn những thuộc tính được thể hiện ở đây là những thuộc tính căn bản nhất mà mỗi chương trình ít nhất cũng xài vài lần

II. Nội dung chính:
1. Nhãn (UILabel): Một trong những controller thông dụng nhất trong lập trình
* Controller: UILabel* LKLabel;
a. text: thay đổi nội dung của đoạn text

LKLabel.text = @”Chương trình LapKan”;

b. textAlignment: Canh lề cho đoạn text
[LKLabel setTextAlignment:UITextAlignmentLeft];
* Lưu ý: Có thể sử dụng UITextAlignmentRight và UITextAlignmentCenter để canh lề phải hay canh giữa
c. textColor: Thay đổi màu của đoạn văn
LKLabel.textColor = [UIColor redColor];
d. backgroundColor: Màu nền của đoạn văn
LKLabel.backgroundColor – [UIColor blueColor];
e. font: Điều chỉnh font của đoạn text
[LKLabel setFont:[UIFont fontWithName:@”Arial” size:11]];
f. hidden: Điều chỉnh hiện/ẩn của đoạn văn
LKLable.hidden = YES;

2. Nút (UIButton): Nút là controller phổ biến nhất để người dùng tương tác phần mềm và game
*Controller: UIButton* LKButton;
a. text: thay đổi nội dung của nút trong trường hợp cụ thể
[LKButton setTitle:@”LapKan product” forState: UIControlStateNormal];

b. setTitleColor: thay đổi màu của nút trong những trường hợp cụ thể
[LKButton setTitleColor:[UIColor RedColor] forState: UIControlStateSelected];

c. setBackgroundImage: Thay đổi nền của nút trong những trường hợp cụ thể

d. setLabel.font:
LKButton.titleLabel.font = [UIFont fontWithName:@”Arial” size:11];
e. setImage:
[LKButton setImage:[UIImage imageNamed:@”normal.png”] forState:UIControlStateNormal];
[LKButton setImage:[UIImage imageNamed:@”pressed.png” forState:UIControlStateHighlighted];

Có thể sử dụng:  UIControlStateHighlighted

   UIControlStateDisabled
UIControlStateSelected
=> Đây là các trạng thái của nút (Button)

PHP khóa Table

<?php
   // Part for saving data to database
   // Updated New : Using LapKan Standard
   // Updated Date: 05/11/2012
   
   $tenkhunggia = $_REQUEST[‘TenKhungGia’];
   $mota = $_REQUEST[‘MoTa’];
   $nguoitao = $_REQUEST[‘NguoiTao’];
   $ngaytao = $_REQUEST[‘NgayTao’];
   $ngayhieuluc = $_REQUEST[‘NgayHieuLuc’];
   $ghichu = $_REQUEST[‘GhiChu’];
   $ghichuadmin = ‘-‘;
   
   include ‘..\..\..\LKSource\LKGeneral\LKDatabase.php’;
   //$sql_lock=”LOCK TABLES lkkhunggiamaster READ”;
   mysql_query(“LOCK TABLES lkkhunggiamaster WRITE”);
   $sql = “insert into lkkhunggiamaster(tenkhunggia,mota,nguoitao,ngaytao,ngayhieuluc,ghichu,ghichuAdmin) values(‘$tenkhunggia’, ‘$mota’,’$nguoitao’,’$ngaytao’,’$ngayhieuluc’, ‘$ghichu’, ‘$ghichuadmin’);”;
   $result = @mysql_query($sql);
   if ($result){
       $getid= “SELECT idm FROM `lkkhunggiamaster` ORDER BY idm DESC  LIMIT 0,1;”;
       $result_id=@mysql_query($getid);
       $row=mysql_fetch_assoc($result_id);        
//echo $row[‘idm’];
       echo json_encode(array(‘msg’=>’Lưu dữ liệu thanh cong. Mô tả: ‘.$row[‘idm’] ));        
    //echo json_encode(array(‘success’=>true));
   } else {
    echo json_encode(array(‘msg’=>’Lưu dữ liệu bị lỗi. Mô tả: ‘.$result));
   }
   $sql_unlock=”UNLOCK TABLES;”;
   mysql_query($sql_unlock);
?>

=> Khóa table lại để lấy id mới nhất được sinh ra trong database

Lập trình không khó

Nhiều người xem các ngôn ngữ lập trình đều giống nhau về mặt hình thức. Tuy nhiên điều đó thật sự không chính xác hoàn toàn. Các ngôn ngữ có thể có chung một số thứ nhưng về cấu trúc thì có thể khác nhau hoàn toàn. Những điểm giống nhau giữa các ngôn ngữ là để giúp cho người lập trình làm quen nhanh chóng và có thể sử dụng lại phần lớn những thứ họ đã viết trước đó chứ thực sự mỗi ngôn ngữ có thể viết khác nhau hoàn toàn.

Trong đó ngôn ngữ C sau khi ra đời đã rất được chào đón, điều này có được phần lớn là do công của Microsoft, ông trùm phần mềm lúc bấy giờ. C trở tàhnh nền tảng của hầu hết mọi ngôn ngữ lập trình.

Tuy nhiên, chúng ta phải xác định rõ rằng mỗi ngôn ngữ lập trình đều có những ưu điểm riêng và những lĩnh vực riêng để phát huy. Java với ưu điểm sử dụng máy ảo có thể chạy được trên mọi hệ điều hành không giới hạn chính là thứ mà những ngôn ngữ khác khó lòng theo kịp. Trong khi đó C với tốc độ vượt trội do được biên dịch thành mã máy có ứng dụng trên những lĩnh vực hoàn toàn khác.

Hiện tại đang là thời đại của lập trình di động (mobile programming), C Object (Apple) và Java (Google – Android) đang chiếm vị thế tối thượng. Các ngôn ngữ lập trình không khó, nó khó là do áp dụng sai lĩnh vực. Nếu bạn sử dụng một ngôn ngữchuyên dùng cho quân sự với tính bảo mật cao để lập trình một thứ bình thường thì dĩ nhiên nó khó rồi.

Một điều nữa cần nói về lập trình là một ngôn ngữ lập trình có thể làm được mọi thứ (không tính những ngôn ngữ đã chết vì người phát triển đã không còn tiếp tục hỗ trợ cho những thứ mới mẻ nữa). Cái quan trọng là chúng ta phải biết chọn đúng công cụ để hoàn thành công việc của chính mình. (Bạn có thể dùng đại bác để săn thỏ nhưng bạn cũng biết nó khó đến chứng nào mà.