มาทำเกมส์ 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_OutputText(1,0,0,"x + y = %d", z);
เหมือนกันมากต่างกันที่ ตัวแปร z
*ตัวแปร z ควรจะเป็นผลบวกx,y ใช่หรือไม่?
*ตัวแปร x,y จะสุ่มค่าได้มั้ยครับ?
*สงสัย %d มีความหมายยังไงแสดงค่าตัวแปร z ใช่หรือไม่?
ปล.ขอบคุณมากๆครับ