Sufficiency Economy
Group Blog
 
All blogs
 
มาทำเกมส์ RPG บน NintendoDS โดยใช้ PAlib : ตอนที่2 ภาษาซี กับ แสดงตัวอักษรภาษาอังกฤษ




การเขียนโปรแกรมด้วยภาษาซี
//palib-dev.com/wiki/doku.php?id=cpptut
และการแสดงผลเป็นตัวอักษร ที่ทาง PAlib จัดเตรียมไว้ให้
//palib-dev.com/wiki/doku.php?id=input_output

เริ่มจากภาษา C
ที่จริงไปซื้อหนังสือภาษาไทยที่ขายอยู่จะดีกว่า ในที่นี้จะอธิบายคร่าวตามที่เขาเขียนใน web ละกัน

1. ตัวแปร (variable) ชื่อก็บอกอยู่แล้วว่า แปรเปลียนค่าได้ โดยต้องกำหนดพื้นที่ให้เหมาะสมกันค่าต้องการเก็บเท่านั้น เช่น
char เป็นชนิดตัวแปรสำหรับเก็บจำนวนเต็มตั้งแต่ 0 ถึง 256 ซึ่งมีขนาด(size) 8 bit และถ้าเราต้องการให้มีเครื่องหมายบวก ลบด้วย ซึ่งเรียกว่า signed char จะทำให้ค่าที่เก็บได้คือ -128 ถึง 127
โดยใน devkitPro จะใช้ชื่อว่า u8 สำหรับ unsigned char และ s8 สำหรับ signed char

ถ้าต้องการเก็บค่าที่มากกว่าเป็น 16 bit มีค่า 0 ถึง 65535 หรือแบบมีเครื่องหมาย มีค่า -32768 ถึง 32767 ในภาษาซีจะใช้ คำว่า short
ใน devkitPro ใช้คำว่า u16 กับ s16 ตามลำดับ

ต่อไปก็ long เก็บแบบ 32 bit ไปคำนวณเอาเองละกัน ใน devkitPro ใช้คำว่า u32 กับ s32

สุดท้ายคือ int มาจากคำว่า integer ซึ่งขนาดที่จัดเก็บจะขึ้นอยู่กับชนิดของเครืองคอมนั้นๆ

2 เมื่อเราต้องการเก็บค่าที่ต้องการใช้ในการคำนวณ ต้องทำการประกาศตัวแปรก่อน เช่น
int x; เป็นการประกาศค่าตัวแปร x เป็นตัวแปรแบบ integer
u8 y; เป็นการประกาศค่าตัวแปร y เป็นตัวแปรแบบ unsigned char แต่ใช้ได้กับ devkitPro เท่านั้นนะครับ ใช้ใน ภาษาซีจะ error นะ ถ้าในภาษาซี ก็ต้องประกาศตัวแปรแบบนี้
unsigned char y;
แล้วอย่าลืมเครื่องหมาย ; สำหรับปิดคำสั่งด้วยเน้อ

3. การใส่ค่าในตัวแปรที่ประกาศไว้ หรือจะเรียกเทห์ๆ ว่าการ assignment ก็ใช้เครื่องหมายเท่ากับ แค่นั้นเอง เช่น x =32; เป็นต้น

4. ต่อไปก็ไปทำค่าที่เก็บไว้มากระทำกัน ด้วยตัวกระทำ(Operator)
เช่น บวก ลบ คูณ หาร ใช้เครื่องหมาย + - * / เช่น
z = x + y; เราจะอ่านจากด้านซ้ายก่อน คือ นำค่าในตัวแปร x บวกกับค่าในตัวแปร y แล้วนำผลลัพธ์ไปเก็บในตัวแปร z ง่ายไหม

ต่อไปมาดูตัวอย่างนี้
x = x +1; ถ้าใครเป็นนักคำนวณก็จะบอกว่าผิดๆ เพราะสมการสองข้างไม่เท่านั้นหุๆ แต่นี้เป็นการเขียนโปรแกรม ไม่ช่ายสมการนะ ซึ่งมีความหมายว่า นำค่าในตัวแปร x ไปบวก 1 แล้วนำมาเก็บในตัวแปร x อีกที คือถ้าตอนแรก x มีค่าเป็น 5 เมื่อผ่านคำสั่งนี้แล้ว ค่า x มีค่าเป็น 6 ครับ

5. พูดส่ะยืดยาวอยาก แสดงผลบนจอแล้วทำไง ถ้าใน ภาษาซี ก็ใช้คำสั่ง printf("แสดงค่า %d",x); อะไรประมาณนี้ แต่ใน nds ทำไงหว่า มีสามคำสั่ง ทำตามนี้เลยคือ

PA_LoadDefaultText(1, 0);
กำหนดให้แสดงผลที่จอบน ถ้าต้องการแสดงผลจอล่างให้เปลี่ยนจาก 1 เป็น 0 และ ส่วนเลข 0 ตัวที่สองคือ background select น่าจะเป็นการเลือกชั้นของ backgrund ที่ต้องการแสดงผล มัง

PA_SetTextCol(1,31,31,31);
กำหนดสีของตัวอักษรที่จะแสดง R G B มีค่า ตั้งแต่ 0-31
และเลข1 ก็เหมือนเดิมคือให้แสดงที่จอบน
ในที่นี้กำหนดให้แสดงเป็นสีขาว

PA_OutputSimpleText(1,0,0,"This is an example");
อันก็ง่ายๆ คือแสดงที่จอบน ตำแหน่งที่แสดงอยู่ที่ col 0 row 0 แล้วตัวอักษรที่แสดงต้องอยู่ในเครื่องหมายคำพูด " ... "

ต่อไปถ้าต้องการแสดงผลตัวแปรที่เก็บไว้ทำอย่างไรก็ง่ายๆ เปลี่ยนคำสั่งใหม่คือ
PA_OutputText(1,0,0,"x + y = %d", z);
เราจะแทรก %d เข้าไปในคำพูด แล้วบอกว่า %d คืออะไร โดยกำหนดไว้หลัง เครื่องหมาย comma ในที่นี้คือ ตัวแปร z นั้นเอง

อันนี้ source code


Create Date : 01 ตุลาคม 2554
Last Update : 1 ตุลาคม 2554 7:57:02 น. 3 comments
Counter : 1382 Pageviews.

 
PA_OutputSimpleText(1,0,0,"This is an example");
กับฟังค์ชั่น
PA_OutputText(1,0,0,"x + y = %d", z);
เหมือนกันมากต่างกันที่ ตัวแปร z
*ตัวแปร z ควรจะเป็นผลบวกx,y ใช่หรือไม่?
*ตัวแปร x,y จะสุ่มค่าได้มั้ยครับ?
*สงสัย %d มีความหมายยังไงแสดงค่าตัวแปร z ใช่หรือไม่?
ปล.ขอบคุณมากๆครับ


โดย: hobbit2008 IP: 110.49.6.200 วันที่: 1 ตุลาคม 2554 เวลา:9:48:23 น.  

 
*ตัวแปร z ควรจะเป็นผลบวกx,y ใช่หรือไม่?
ถูกต้องครับ ให้ดูใน source code ประกอบ

*ตัวแปร x,y จะสุ่มค่าได้มั้ยครับ?
ได้ครับ ใช้คำสั่ง
srand เพื่อกำหนด seed และ ใช้ rand() เพื่อสร้างตัวเลข อ่านรายละเอียดที่ //community.thaiware.com/index.php/topic/293857-c-random-aaacanaenz/

*สงสัย %d มีความหมายยังไงแสดงค่าตัวแปร z ใช่หรือไม่?
ถูกต้องครับแสดงตัวแปร z และเนื่องจาก z เป็นตัวแปรที่เก็บจำนวนเต็ม จึงต้องใช้รูปแบบ %d
%d เป็นการกำหนดรูปแบบ (format) ในการแสดงผลในกรณีนี้ %d คือการกำหนดรูปแบบเป็นจำนวนเต็ม(decimal)
ถ้า %s ก็เป็น string


โดย: wink99_th วันที่: 1 ตุลาคม 2554 เวลา:10:06:31 น.  

 
โอ้ววว..ขั้นเทพเลยครับ...


โดย: ShiroOgon วันที่: 1 ตุลาคม 2554 เวลา:13:21:40 น.  

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

wink99_th
Location :
พิษณุโลก Thailand

[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 8 คน [?]




New Comments
Friends' blogs
[Add wink99_th's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.