Turtle Bridge
อธิบาย Code ในเกม
int x = 50; //กำหนดตัวแปรชนิด Global variable เพื่อให้แทนค่าได้ทั้งฟังก์ชั่น สำหรับตัวนี้
นำมาใช้ในการกำหนดการเคลื่อนไหว และแทนค่าตัวเลขต่างๆ รวมทั้งใช้ในเงื่อนไขเช่นกัน
float [] y = {300, 300, 300, 300}; //กำหนด Array 1 มิติสำหรับการเก็บค่าบนแกน
Y โดยการใช้ฟังก์ชั่น float ซึ่งเป็นการกำหนดจำนวนทศนิยม
ตัวนี้ใช้สำหรับการเคลื่อนไหวตามแกน Y ของเต่า
float [] x1 = {150, 250, 350, 450}; //กำหนด Array 1 มิติสำหรับการเก็บค่าบนแกน
X ซึ่งกำหนดด้วยฟังก์ชั่น float ให้ค่าเป็นทศนิยมด้วยเช่นกัน
สำหรับตัวนี้ใช้ในการเคลื่อนไหวของเต่าตามแกน X
int y1; //กำหนดตัวแปรสำหรับการคำนวณ และเก็บค่าในภายหลัง
ซึ่งจะมีค่าหลังการใช้งาน เช่นตอนใช้งาน หรือตอนเล่นเกม
int xMenu = 50; //กำหนดตัวแปรนี้
เพื่อให้แทนค่าตัวเลขตามพิกัดแกน X แค่ในหน้าเมนู และ Game Over
int yMenu = 350; //กำหนดตัวแปรนี้ เพื่อให้แทนค่าตัวเลขตามพิกัดแกน Y แค่ในหน้าเมนู และ Game Over
int [] i = new int [4]; //กำหนดให้ตัวแปร i เป็น array
ใหม่สี่ตัว เพื่อให้ใช้ในการนับ และระบุตัวเต่า ตั้งแต่ตัวที่ 1
ถึง 4
int highscore = 0; //กำหนดตัวแปรเพื่อนับคะแนนสูงสุดในแต่ละครั้งที่เล่นเกม
โดยเริ่มจาก 0
int TurtlePosition = 0; //int(random(0, 3)); หรือกำหนดเพื่อใช้ในการสุ่มตัวแปรตั้งแต่
0 ถึง 3
เพื่อการกำหนดการเคลื่อนไหวของเต่าในเกม
ให้มีการเคลื่อนไหวแบบสุ่มเลือกตามฟังก์ชั่น
int ScoreCount; //กำหนดตัวแปรไว้หาค่าในภายหลัง โดยเฉพาะสำหรับเงื่อนไขต่างๆ
ในเกม
int DeadMode = 1; //กำหนดตัวแปรสำหรับกรณีที่ตาย หรือแพ้
int take = 0; //กำหนดตัวแปรตัวนี้สำหรับการสร้างฉากแต่ละฉากในเกม
boolean SmoothOrStep; //ตัวแปรตัวนี้กำหนดขึ้นเพื่อควบคุมการเคลื่อนไหวของเต่าให้เป็นแบบ
Smooth หรือแบบราบรื่น และแบบ Step หรือแบบทีละช้าๆ
int Delay = 0; //ตัวแปรตัวนี้กำหนดขึ้นเพื่อควบคุมการเคลื่อนไหวของเต่า
โดยให้มีการเคลื่อนไหวขึ้นลงอย่างช้าๆ ในการเล่นแบบ Step
void setup() { //การใช้ฟังก์ชัน void เป็นการใช้ฟังก์ชันที่ไม่มีการส่งค่ากลับ
และเราใช้ void setup เป็นการใช้ฟังก์ชันในการประกาศว่าจะกำหนดค่าหรือตั้งค่าอะไรบางอย่าง
และฟังก์ชันนี้ก็จำเป็นสำหรับพื้นฐาน Animation
size(600, 400); //ฟังก์ชั่นสำหรับการกำหนดขนาดของพื้นที่ หรือ size(width,
height)
background(98, 255, 243);
//ฟังก์ชั่นสำหรับการเติมสีในพื้นหลัง โดยเติมตามแม่สี
หรือเครื่องหมาย # ในเครื่องมือ Color Selector โดยสี่ที่ใส่ไปนี้คือ สีฟ้าคราม สำหรับการตกแต่งท้องฟ้าในเกม
textFont(createFont("Arial",
50)); //ฟังก์ชั่นสำหรับการเปลี่ยนรูปแบบตัวอักษรที่เขียน
}
void draw() { //การใช้ฟังก์ชัน void เป็นการใช้ฟังก์ชันที่ไม่มีการส่งค่ากลับ
และเราใช้ void draw เป็นการใช้ฟังก์ชันในการประกาศว่าเราต้องการจะวาดอะไรบางอย่างลงไป
นอกจากนี้ยังสามารถเรียกใช้ฟังก์ชั่นที่สร้างขึ้นได้
if (take == 0) { //if() คือฟังก์ชั่นสำหรับการกำหนดเงื่อนไข โดย if ตัวนี้กำหนดเงื่อนไขว่า
ในกรณีที่ค่า take เทียบเท่า หรือเท่ากับ 0 ทำตามไขที่อยู่ภายใน แล้วจะเห็นผลลัพธ์แสดงออกมาบนจอ การทำตามเงื่อนไข
อาจมีการทำซ้ำไปซ้ำมาเรื่อยๆ
MenuDisplay(); //ให้ฟังก์ชั่นที่ชื่อว่า MenuDisplay หรือฟังก์ชั่นแสดงหน้าจอหลักที่สร้างขึ้น
ทำงาน
}
else if (take == 1) { //คำสั่ง if - else เป็นการกำหนดเงื่อนไขของตัวแปร
(ถ้า-แล้ว) หรือกำหนดเงื่อนไขอีกกรณีหนึ่ง หรือใช้ else
สำหรับการกำหนดเงื่อนไขมากกว่าหนึ่งกรณี ในกรณีนี้ ถ้าค่า take มีค่าเทียบเท่า
หรือเท่ากับ 1 ให้ทำตามเงื่อนไขด้านล่าง
อาจมีการทำซ้ำไปซ้ำมา เช่นกัน
stroke(0);
//คำสั่ง stroke คือการกำหนดสีของเส้น
โดยเราใช้เครื่องมือการเลือกสีช่วยในโปรแกรม Processing ไปที่
tools ---> color selector -----> ทำการเลือกสีที่ต้องการและกด
ctrl+c เพื่อทำการ copy โค้ดสีดังกล่าว
และกด ctrl+v เพื่อวางและใช้โค้ดสีที่เราเลือก หรือเราอาจใช้วิธีการเขียนตัวเลขตามแม่สีก็ได้
เหมือนกับฟังก์ชั่น background วิธีนี้ทำให้เราได้สีที่เราต้องการมากกว่า
และเราสามารถเลือกความละเอียดสีเองได้อีกด้วย สีที่ใส่ไปนี้คือ สีดำ
DrawSea(); //เรียกใช้ฟังก์ชั่น DrawSea() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างทะเล
DrawTwoShores(); //เรียกใช้ฟังก์ชั่น DrawTwoShores() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างฝั่งสองฝั่งในเกม
DrawTurtles(Delay);
//เรียกใช้ฟังก์ชั่น DrawTurtle() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างเต่า พร้อมกับมี parameter
ที่ชื่อ Delay ซึ่ง parameter เป็นค่าที่สามารถแทนตัวแปรนี้ในฟังก์ชั่นได้
DrawBox(); //เรียกใช้ฟังก์ชั่น DrawBox() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างกล่อง
DrawPlayer(); //เรียกใช้ฟังก์ชั่น DrawPlayer() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างตัวผู้เล่น
ScoreDisplay(); //เรียกใช้ฟังก์ชั่น ScoreDisplay() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการนับคะแนน
IsDead(); //เรียกใช้ฟังก์ชั่น IsDead() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการกำหนดเงื่อนไขในกรณีที่แพ้
}
Delay = Delay+1; //การกำหนดให้ ตัวแปร Delay ที่เรากำหนดขึ้นเพิ่มค่าทีละ 1 เราจึงเห็นว่า เต่ามีการเคลื่อนไหวช้าลง
เพราะค่า Delay ที่เพิ่มขึ้น
}
void DrawTwoShores() { //ฟังก์ชั่นที่สร้างขึ้นสำหรับการสร้างฝั่งสองฝั่งในเกม
ขณะเล่น
fill(#AA7815); //คำสั่ง fill เป็นคำสั่งใส่สีให้กับรูปทรงต่างๆที่เราสั่งให้วาด
โดยเลข 3 ตัวในวงเล็บมีลำดับแม่สีดังนี้คือ (Red,
Green, Blue) หรือใส่ค่าของสีตามเครื่องหมาย # ในเครื่องมือ Color Selector โดยสีที่ใส่ไปนี้คือ
สีน้ำตาล สำหรับฝั่งที่เป็นจุดเริ่มต้น
rect(0, 200, 100, 200); //คำสั่ง rect เป็นการสั่งให้วาดรูปสี่เหลี่ยมด้านเท่า
คือ สี่เหลี่ยมจัตุรัสหรือผืนผ้า วาดเป็นโครงของลำตัวให้มีความเป็นเหลี่ยม โดยสังเกตได้จาก rect(x, y, width, height)
fill(#0F9817); //สีเขียวสำหรับอีกฝั่งหนึ่งในเกม
rect(500, 200, 100, 200);
fill(#BF9443); //สีน้ำตาลอ่อนสำหรับวาดกล่อง
rect(520, 120, 80, 80); //วาดสี่เหลี่ยมสำหรับตัวกล่องให้เป็นสัญลักษณ์ของอีกฝั่งหนึ่ง
fill(#F2C211); //สีเหลือง
rect(533, 133, 55, 55); //วาดสี่เหลี่ยมซ้อนเพื่อทำให้ดูเหมือนกล่องมากขึ้น
} //ฟังก์ชั่นตัวนี้ถูกเรียกใช้ในฟังก์ชั่นหลักสำหรับการวาด หรือ void
draw
void DrawSea() { //ฟังก์ชั่นที่สร้างขึ้นสำหรับการวาดทะเล
เรียกใช้ในฟังก์ชั่นหลักสำหรับการวาด void draw เช่นกัน
fill(#0F8598); //สีน้ำเงินเข้ม
rect(100, 300, 600, 500);
}
void DrawTurtles(int del) { //ฟังก์ชั่นที่สร้างขึ้นสำหรับการสร้างเต่า พร้อมมี parameter
ซึ่งเป็นตัวแปรจำนวนเต็มชื่อ del ที่เป็น Local
Variable ซึ่งทำงานได้แค่ในฟังก์ชั่น
background(98, 255, 243);
//สีฟ้าคราม
DrawSea(); //เรียกใช้ฟังก์ชั่นสำหรับการวาดทะเล
DrawTwoShores(); //เรียกใช้ฟังก์ชั่นสำหรับการวาดฝั่งสองฝั่ง
fill(#5BFA30); //เติมสีเขียวอ่อนสำหรับคอเต่า
ellipse(x1[0]+35,
y[0]-25, 35, 35); //ฟังก์ชั่นสำหรับการวาดวงรี
โดยดูได้จาก ellipse(x, y, width, height)
ellipse(x1[1]+35,
y[1]-25, 35, 35);
ellipse(x1[2]+35,
y[2]-25, 35, 35);
ellipse(x1[3]+35,
y[3]-25, 35, 35); //วาดคอเต่าสำหรับเต่าทั้งหมด
fill(#FFFFFF); //เติมสีขาวสำหรับตาขาวของเต่า
ellipse(x1[0]+40,
y[0]-30, 12, 12);
ellipse(x1[1]+40,
y[1]-30, 12, 12);
ellipse(x1[2]+40,
y[2]-30, 12, 12);
ellipse(x1[3]+40,
y[3]-30, 12, 12); //วาดตาขาวของเต่าทั้งหมด
fill(0);
ellipse(x1[0]+42,
y[0]-30, 7, 7); //เติมสีดำสำหรับลูกตาดำของเต่า
ellipse(x1[1]+42,
y[1]-30, 7, 7);
ellipse(x1[2]+42,
y[2]-30, 7, 7);
ellipse(x1[3]+42,
y[3]-30, 7, 7); //วาดลูกตาดำของเต่าทั้งหมด
fill(#5BFA30); //เติมสีเขียวอ่อนสำหรับกระดองเต่า
ellipse(x1[0], y[0], 70,
40);
ellipse(x1[1], y[1], 70,
40);
ellipse(x1[2], y[2], 70,
40);
ellipse(x1[3], y[3], 70,
40); //วาดกระดองเต่าทั้งหมด
fill(#EBF013); //เติมสีเหลืองอ่อนสำหรับที่เหยียบบนกระดองเต่า
ellipse(x1[0], y[0]-10,
50, 20);
ellipse(x1[1], y[1]-10,
50, 20);
ellipse(x1[2], y[2]-10,
50, 20);
ellipse(x1[3], y[3]-10,
50, 20); //วาดกระดองเต่าที่ใช้เป็นฐานเหยียบบนเต่าทั้งหมด
fill(#35AF23); //เติมสีเขียวสำหรับครีบเต่า
ellipse(x1[0]-30,
y[0]+22, 21, 30);
ellipse(x1[0]+30,
y[0]+22, 21, 30);
ellipse(x1[1]-30,
y[1]+22, 21, 30);
ellipse(x1[1]+30,
y[1]+22, 21, 30);
ellipse(x1[2]-30,
y[2]+22, 21, 30);
ellipse(x1[2]+30,
y[2]+22, 21, 30);
ellipse(x1[3]-30, y[3]+22,
21, 30);
ellipse(x1[3]+30,
y[3]+22, 21, 30); //วาดครีบของเต่าทั้งหมด
if (TurtlePosition == 0)
{ //กำหนดเงื่อนไขสำหรับเต่าตัวที่หนึ่ง
i[0] = i[0]+1;
if (y[0] == 300)
{ //ในกรณีที่ค่า y ที่ตำแหน่งที่หนึ่งใน
array มีค่าเทียบเท่า 300
fill(#EA5A00); //เติมสีส้มเกือบแดง
ellipse(x1[0]+35,
y[0]-25, 35, 35);
ellipse(x1[0],
y[0], 70, 40);
ellipse(x1[0],
y[0]-10, 50, 20);
ellipse(x1[0]-30,
y[0]+22, 21, 30);
ellipse(x1[0]+30,
y[0]+22, 21, 30); //เต่าตัวที่หนึ่งซึ่งมีการเคลื่อนไหวตามพิกัด
fill(#FFFFFF); //เติมสีขาว
ellipse(x1[0]+40,
y[0]-30, 12, 12);
fill(0); //สีดำ
ellipse(x1[0]+42,
y[0]-30, 7, 7); //วาดดวงตาของเต่าให้เป็นภาพนิ่งเคลื่อนไหวไปด้วย
}
if ((i[0] >= 30) &&
(i[0] <= 126) && (y[0] >= 300) && (y[0] <= 380)) { //กำหนดเงื่อนไขสำหรับการเคลื่อนไหวสำหรับเต่าตัวแรก
fill(#EA5A00);
ellipse(x1[0]+35,
y[0]-25, 35, 35);
ellipse(x1[0],
y[0], 70, 40);
ellipse(x1[0],
y[0]-10, 50, 20);
ellipse(x1[0]-30,
y[0]+22, 21, 30);
ellipse(x1[0]+30,
y[0]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[0]+40,
y[0]-30, 12, 12);
fill(0);
ellipse(x1[0]+42,
y[0]-30, 7, 7);
if (SmoothOrStep ==
true) { //กำหนดเงื่อนไข ถ้าค่า SmoothOrStep มีค่าเทียบเท่ากับ true จะกำหนดให้มีการเคลื่อนไหวแบบ
Smooth
y[0]
= y[0]+0.8; //การเคลื่อนไหวของเต่าจะมีการเคลื่อนไหวลงอย่างช้าๆ
บนพิกัด y ตามค่า y ที่ตำแหน่งแรกใน Array
โดย y[0] มีค่าเพิ่มขึ้นทีละ 0.8
}
else if
(SmoothOrStep == false) { //กำหนดเงื่อนไข
ถ้าค่า SmoothOrStep มีค่าเทียบเท่ากับ false จะกำหนดให้มีการเคลื่อนไหวแบบ Step
if
(del%10 == 0) { //ถ้าค่า del
หาร 10 ลงตัว
y[0]
= y[0]+8; //การเคลื่อนไหวของเต่าจะมีการเคลื่อนไหวลงอย่างราบรื่น
บนพิกัด y ตามค่า y ที่ตำแหน่งแรกใน Array
โดย y[0] มีค่าเพิ่มขึ้นทีละ 8
}
}
} //ทั้งหมดนี้เป็นการกำหนดการเคลื่อนไหวสำหรับเต่าตัวแรก
และเงื่อนไขสำหรับเต่าตัวอื่นก็ไม่แตกต่างกันมาก
if (y[0] >= 370) {
y[0] = 370;
i[0] = 200;
}
if ((y[0] >= 300) &&
(i[0] >= 200)) {
fill(#5BFA30);
ellipse(x1[0]+35,
y[0]-25, 35, 35);
ellipse(x1[0],
y[0], 70, 40);
ellipse(x1[0],
y[0]-10, 50, 20);
ellipse(x1[0]-30,
y[0]+22, 21, 30);
ellipse(x1[0]+30,
y[0]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[0]+40,
y[0]-30, 12, 12);
fill(0);
ellipse(x1[0]+42,
y[0]-30, 7, 7);
if (SmoothOrStep ==
true) {
y[0]
= y[0]-0.8;
}
else if
(SmoothOrStep==false) {
if
(del%10==0) {
y[0]
= y[0]-8;
}
}
}
if (i[0] >= int
(random(240, 1000))) { //ถ้าค่า i[0]
มีค่ามากกว่าหรือเท่ากับจำนวนเต็มที่สุ่มตั้งแต่ 240 ถึง 1,000
TurtlePosition =
int(random(0, 4)); //TruePosition มีค่าเท่ากับจำนวนเต็มที่สุ่มตั้งแต่
0 ถึง 4
กำหนดไว้สำหรับการเคลื่อนไหวแบบสุ่มของเต่า
y[0] = 300;
i[0] = 0;
}
}
if (TurtlePosition == 1) { //ถ้าค่า TruePosition มีค่าเทียบเท่ากับ 1 แล้วการเคลื่อนไหวของเต่าตัวที่สองจะเป็นไปตามผลด้านล่าง
i[1] = i[1]+1; //ค่า i สำหรับ Array ตัวที่สองมีค่าเพิ่มขึ้นทีละ 1
if (y[1]==300) {
fill(#EA5A00);
ellipse(x1[1]+35,
y[1]-25, 35, 35);
ellipse(x1[1],
y[1], 70, 40);
ellipse(x1[1],
y[1]-10, 50, 20);
ellipse(x1[1]-30,
y[1]+22, 21, 30);
ellipse(x1[1]+30,
y[1]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[1]+40,
y[1]-30, 12, 12);
fill(0);
ellipse(x1[1]+42,
y[1]-30, 7, 7);
}
if ((i[1] >= 30) &&
(i[1] <= 126) && (y[1] >= 300) && (y[1] <= 380)) {
fill(#EA5A00);
ellipse(x1[1]+35,
y[1]-25, 35, 35);
ellipse(x1[1],
y[1], 70, 40);
ellipse(x1[1],
y[1]-10, 50, 20);
ellipse(x1[1]-30,
y[1]+22, 21, 30);
ellipse(x1[1]+30,
y[1]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[1]+40,
y[1]-30, 12, 12);
fill(0);
ellipse(x1[1]+42,
y[1]-30, 7, 7);
if (SmoothOrStep ==
true) {
y[1]
= y[1]+0.8;
}
else if
(SmoothOrStep == false) {
if
(del%10 == 0) {
y[1]
= y[1]+8;
}
}
}
if (y[1] >= 370) {
y[1] = 370;
i[1] = 200;
}
if ((y[1] >= 300) &&
(i[1] >= 200)) {
fill(#5BFA30);
ellipse(x1[1]+35,
y[1]-25, 35, 35);
ellipse(x1[1],
y[1], 70, 40);
ellipse(x1[1],
y[1]-10, 50, 20);
ellipse(x1[1]-30,
y[1]+22, 21, 30);
ellipse(x1[1]+30,
y[1]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[1]+40,
y[1]-30, 12, 12);
fill(0);
ellipse(x1[1]+42, y[1]-30, 7, 7);
if (SmoothOrStep ==
true) {
y[1]
= y[1]-0.8;
}
else if
(SmoothOrStep==false) {
if
(del%10 == 0) {
y[1]
= y[1]-8;
}
}
}
if (i[1]>=int
(random(240, 1000))) {
TurtlePosition =
int(random(0, 4));
y[1] = 300;
i[1] = 0;
}
} //เงื่อนไขสำหรับการเคลื่อนไหวของเต่าตัวที่สองนี้ค่อนข้างคล้ายกับเต่าตัวแรก
แต่มีการเปลี่ยนแปลงเล็กน้อย
if (TurtlePosition == 2) {
i[2] = i[2]+1; //สำหรับเต่าตัวที่สาม ถ้าค่า TruePosition เทียบเท่ากับ 2 ผลจะเป็นตามโค้ดด้านล่าง
if (y[2] == 300) { //ค่า i ในตำแหน่งนี้มีค่าเพิ่มขึ้นทีละ
1
fill(#EA5A00);
ellipse(x1[2]+35,
y[2]-25, 35, 35);
ellipse(x1[2],
y[2], 70, 40);
ellipse(x1[2],
y[2]-10, 50, 20);
ellipse(x1[2]-30,
y[2]+22, 21, 30);
ellipse(x1[2]+30,
y[2]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[2]+40,
y[2]-30, 12, 12);
fill(0);
ellipse(x1[2]+42,
y[2]-30, 7, 7);
}
if ((i[2] >= 30) &&
(i[2] <= 126) && (y[2] >= 300) && (y[2] <= 380)) {
fill(#EA5A00);
ellipse(x1[2]+35,
y[2]-25, 35, 35);
ellipse(x1[2],
y[2], 70, 40);
ellipse(x1[2],
y[2]-10, 50, 20);
ellipse(x1[2]-30,
y[2]+22, 21, 30);
ellipse(x1[2]+30,
y[2]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[2]+40,
y[2]-30, 12, 12);
fill(0);
ellipse(x1[2]+42,
y[2]-30, 7, 7);
if (SmoothOrStep ==
true) {
y[2]
= y[2]+0.8;
}
else if
(SmoothOrStep == false) {
if
(del%10==0) {
y[2]
= y[2]+8;
}
}
}
if (y[2] >= 370) {
y[2] = 370;
i[2] = 200;
}
if ((y[2] >= 300) &&
(i[2] >= 200)) {
fill(#5BFA30);
ellipse(x1[2]+35,
y[2]-25, 35, 35);
ellipse(x1[2],
y[2], 70, 40);
ellipse(x1[2],
y[2]-10, 50, 20);
ellipse(x1[2]-30,
y[2]+22, 21, 30);
ellipse(x1[2]+30,
y[2]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[2]+40,
y[2]-30, 12, 12);
fill(0);
ellipse(x1[2]+42,
y[2]-30, 7, 7);
if (SmoothOrStep ==
true) {
y[2]
= y[2]-0.8;
}
else if
(SmoothOrStep == false) {
if
(del%10 == 0) {
y[2]
= y[2]-8;
}
}
}
if (i[2] >= int
(random(240, 1000))) {
TurtlePosition =
int(random(0, 4));
y[2] = 300;
i[2] = 0;
}
} //เงื่อนไขในการเคลื่อนไหวของเต่าตัวที่สามนี้คล้ายกับตัวที่หนึ่งและสอง
if ((TurtlePosition == 3)||(TurtlePosition == 4)) { //ถ้า TruePosition มีค่าเทียบเท่ากับ
3 หรือ 4
i[3] = i[3]+1; //ค่า i ที่ตำแหน่งนี้มีค่าเพิ่มขึ้นทีละ
1
if (y[3]==300) {
fill(#EA5A00);
ellipse(x1[3]+35,
y[3]-25, 35, 35);
ellipse(x1[3],
y[3], 70, 40);
ellipse(x1[3],
y[3]-10, 50, 20);
ellipse(x1[3]-30,
y[3]+22, 21, 30);
ellipse(x1[3]+30,
y[3]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[3]+40,
y[3]-30, 12, 12);
fill(0);
ellipse(x1[3]+42,
y[3]-30, 7, 7);
}
if ((i[3] >= 30) &&
(i[3] <= 126) && (y[3] >= 300) && (y[3] <= 380)) {
fill(#EA5A00);
ellipse(x1[3]+35,
y[3]-25, 35, 35);
ellipse(x1[3],
y[3], 70, 40);
ellipse(x1[3],
y[3]-10, 50, 20);
ellipse(x1[3]-30,
y[3]+22, 21, 30);
ellipse(x1[3]+30,
y[3]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[3]+40,
y[3]-30, 12, 12);
fill(0);
ellipse(x1[3]+42,
y[3]-30, 7, 7);
if (SmoothOrStep ==
true) {
y[3]
= y[3]+0.8;
}
else if
(SmoothOrStep == false) {
if
(del%10 == 0) {
y[3]
= y[3]+8;
}
}
}
if (y[3] >= 370) {
y[3] = 370;
i[3] = 200;
}
if ((y[3] >= 300) &&
(i[3] >= 200)) {
fill(#5BFA30);
ellipse(x1[3]+35,
y[3]-25, 35, 35);
ellipse(x1[3],
y[3], 70, 40);
ellipse(x1[3],
y[3]-10, 50, 20);
ellipse(x1[3]-30,
y[3]+22, 21, 30);
ellipse(x1[3]+30,
y[3]+22, 21, 30);
fill(#FFFFFF);
ellipse(x1[3]+40,
y[3]-30, 12, 12);
fill(0);
ellipse(x1[3]+42,
y[3]-30, 7, 7);
if (SmoothOrStep ==
true) {
y[3]
= y[3]-0.8;
}
else if
(SmoothOrStep == false) {
if
(del%10==0) {
y[3]
= y[3]-8;
}
}
}
if (i[3] >= int
(random(240, 1000))) {
TurtlePosition =
int(random(0, 4));
y[3] = 300;
i[3] = 0;
}
} //เงื่อนไขสำหรับตัวที่สี่นี้คล้ายกับตัวอื่นๆ เพียงแค่ดัดแปลงเล็กน้อย
}
void ScoreDisplay() { //ฟังก์ชั่นสำหรับการนับคะแนน
fill(0); //เติมสีดำ
textSize(50); //ฟังก์ชั่นสำหรับการเปลี่ยนขนาดของข้อความ
โดยการใส่ตัวเลขลงไปในวงเล็บ
text(highscore, 295, 50);
//ฟังก์ชั่นสำหรับการเขียนข้อความที่ตำแหน่งพิกัด x
และ y โดยสังเกตได้จาก tect(“Message”,
x, y) ฟังก์ชั่นตัวนี้พิมพ์ค่าคะแนนสูงสุดที่คำนวณได้จากอีกฟังก์ชั่นชุดหนึ่ง
}
void MenuDisplay() { //ฟังก์ชั่นที่สร้างสำหรับการสร้างเมนู หรือหน้าจอหลัก
background(62, 189, 227);
//กำหนดพื้นหลังสีฟ้า
TurtlesOnMenu(xMenu+297,
yMenu-150); //วาดฟังก์ชั่น TurtlesOnMenu
หรือฟังก์ชั่นเต่าเคลื่อนไหวถอยหลังที่ตำแหน่งตามค่า parameter
บนหน้าจอหลักเมนู และ Game Over
TwoShoresOnMenu(); //วาดฟังก์ชั่น TwoShoresOnMenu หรือฟังก์ชั่นฝั่งสองฝั่งแบบวงรีซึ่งวาดบนหน้าจอหลักเมนู และ Game
Over
DisplayButtons(); //เรียกใช้ฟังก์ชั่น DisplayButtons(); หรือฟังก์ชั่นปุ่มกดบนเมนูเพื่อเลือกการเล่นเกมที่มีการเคลื่อนไหวแบบ Smooth
หรือ Step
if (yMenu < 450) { //ถ้า yMenu มีค่าน้อยกว่า 450
yMenu = yMenu-4;
//yMenu มีค่าลดลงทีละ 4
}
else if (yMenu < 300)
{ //กำหนดเงื่อนไขอีกอย่างว่า ถ้า yMenu มีค่าน้อยกว่า 300
yMenu = yMenu+6;
//yMenu มีค่าเพิ่มขึ้นทีละ 6
}
else if (xMenu > 250)
{ //กำหนดเงื่อนไขอีกอย่างว่า ถ้า xMenu มีค่ามากกว่า 250
xMenu =
xMenu+4; //xMenu มีค่าเพิ่มขึ้นทีละ 4
}
}
void DisplayButtons() { //ฟังก์ชั่นที่สร้างขึ้นสำหรับปุ่มกด Smooth และ Step บนหน้าจอหลักเมนู
stroke(#289318); //เติมเส้นสีเขียวเข้ม
strokeWeight(10); //เพิ่มความหนาของเส้น
fill(#31ED16); //สีน้ำตาลเข้ม
rect(125, 30, 360, 90); //สร้างเป็นกล่องชื่อเกม
fill(0);
textSize(55);
text("Turtle
Bridge", 149, 92); //พิมพ์ข้อความเพื่อสร้างชื่อเกมบนเมนู
โดยทับบนกล่องที่ระบุไว้
stroke(#E6EA05); //เติมสีเหลือง
fill(#FAA505); //เติมสีส้มเหลือง
rect(90, 160, 200, 90); //สร้างกล่องเป็นกล่องชื่อ Smooth
fill(0);
textSize(50);
text("Smooth", 105,
223); //พิมพ์ข้อความเพื่อสร้างปุ่ม Smooth
stroke(#E6EA05); //เติมสีเหลืองอ่อน
fill(#FAA505); //เติมสีส้มเหลือง
rect(310, 160, 200, 90); //สร้างกล่องทำเป็นปุ่ม Step
fill(0);
textSize(50);
text("Step",
358, 223); //พิมพ์ข้อความเพื่อสร้างปุ่ม
Step
if (mousePressed &&
mouseX > 90 && mouseX < 290 && mouseY > 160 &&
mouseY < 250) { //กำหนดเงื่อนไขสำหรับการกดปุ่มภายในกล่อง
Smooth
take = 1;
SmoothOrStep = true;
}
if (mousePressed &&
mouseX > 310 && mouseX < 510 && mouseY > 160 &&
mouseY < 250) { //กำหนดเงื่อนไขสำหรับการกดปุ่มภายในกล่อง
Step
take = 1;
SmoothOrStep = false;
}
}
void IsDead() { //ฟังก์ชั่นที่กำหนดเงื่อนไขในกรณีที่เล่นแพ้
if ((i[0] >= 30) &&
(x == x1[0])) {
DeadMode = 0;
}
if ((i[1] >= 30) &&
(x == x1[1])) {
DeadMode = 0;
}
if ((i[2] >= 30) &&
(x == x1[2])) {
DeadMode = 0;
}
if ((i[3] >= 30)&&(x
== x1[3])) {
DeadMode = 0;
}
if (DeadMode == 0) {
background(62,
189, 227);
TurtlesOnMenu(xMenu+185,
yMenu-150);
TwoShoresOnMenu();
if (yMenu <
450) {
yMenu
= yMenu-4;
}
else if (yMenu
< 300) {
yMenu
= yMenu+6;
}
else if (xMenu > 250) {
xMenu
= xMenu+4;
}
fill(#FF3300); //เติมสีแดงบนข้อความ
textSize(60);
text("Game Over", 140, 80); //พิมพ์ข้อความว่า Game Over บนหน้าหลังจากที่เล่นเกมแพ้
fill(#040A6A); //เติมสีน้ำเงินเข้ม
text("Your
Score : "+highscore, 80, 165); //พิมพ์ข้อความว่า Your Score : คะแนนสูงสุดที่เล่นได้
บนหน้าหลังจากที่เล่นเกมแพ้ เพื่อแสดงให้เห็นว่า เล่นได้คะแนนเท่าไร
fill(#90FF8B); //สีเขียวอ่อน
rect(225, 305,
150, 80); //สร้างกล่องเมนูบนหน้าจอ Game
Over เพื่อเป็นปุ่มกดให้ย้อนกลับไปที่หน้าเมนูหลัก
สำหรับการเล่นเกมในครั้งต่อไป
textSize(50);
fill(0);
text("Menu",
235, 363); //พิมพ์ข้อความเมนูบนกล่องเมนู
if
(mousePressed && mouseX > 225 && mouseX < 375 && mouseY
> 305 && mouseY < 385) { //กำหนดเงื่อนไขสำหรับการกดปุ่มภายในกล่องเมนู
take =
0;
highscore
= 0;
DeadMode
= 1;
x =
50;
y1 =
0;
}
}
}
void TwoShoresOnMenu() { //ฟังก์ชั่นสำหรับการวาดฝั่งสองฝั่งในหน้าจอเมนูหลัก และ Game Over
stroke(53, 95, 53); //สีคราม
strokeWeight(8);
fill(29, 137, 33); //สีเขียว
ellipse(600, 200, 150,
400);
stroke(255, 255, 142); //สีเขียวเข้ม
fill(183, 157, 26); //สีเหลืองทอง
ellipse(0, 200, 150,
400);
}
void TurtlesOnMenu(int xt, int yt) {
//ฟังก์ชั่นสำหรับการวาดเต่าบนหน้าจอเมนูหลัก และ Game
Over
while (xt < 600) { //while() คือฟังก์ชั่นสำหรับการกำหนดเงื่อนไขแบบลูป
while (yt <
600) { //สร้างลูปสองชั้นเพื่อเพิ่มจำนวนเต่าตามพิกัด
//ครีบเต่าทั้ง 4 แขน
stroke(0);
strokeWeight(1);
fill(45,
121, 40); //สีเขียวเข้ม
ellipse(yt-35,
xt-25, 40, 20);
ellipse(yt+35,
xt+25, 40, 20);
ellipse(yt-35,
xt+25, 40, 20);
ellipse(yt+35, xt-25, 40, 20);
//กระดองของเต่า
fill(224,
174, 36); //สีน้ำตาลอ่อน
ellipse(yt,
xt, 80, 60);
//ลวดลายบนกระดองเต่า
line(yt-24,
xt-24, yt+24, xt+24);
line(yt-30,
xt+21, yt+30, xt-21);
line(yt-24,
xt-24, yt+24, xt+24);
line(yt+1,
xt-29, yt+1, xt+30);
line(yt-39,
xt, yt+39, xt);
//วงกลมสองวงซ้อนกันกลางกระดอง เพื่อให้เป็นที่เหยียบเวลาเดินข้าม
fill(255,
95, 3); //สีส้มเกือบแดง
ellipse(yt,
xt, 40, 30);
fill(227,
221, 37); //สีเหลืองอ่อน
ellipse(yt,
xt, 20, 15);
//หัวของเต่า
fill(66,
211, 53); //สีเขียวอ่อน
ellipse(yt+50,
xt, 30, 30);
//ตาของเต่า
fill(#FFFFFF);
//สีขาว
ellipse(yt+50,
xt-7, 8, 10);
ellipse(yt+50,
xt+7, 8, 10);
fill(0);
//สีดำ
ellipse(yt+50,
xt-7, 5, 5);
ellipse(yt+50,
xt+7, 5, 5);
yt =
yt+155; //กำหนดระยะห่างระหว่างเต่า ยิ่งมากขึ้นยิ่งห่างขึ้น
แต่จำนวนเต่าอาจน้อยลง
}
xt = xt+50;
}
}
void DrawPlayer() { //ฟังก์ชั่นสำหรับการสร้างตัวผู้เล่น
strokeWeight(2);
fill(#FFCD81); //เติมสีครีม หรือสีไข่ไก่ สำหรับหัวของคน
line(x-45, 60+y1, x,
117+y1); //line คือฟังก์ชั่นสำหรับการวาดเส้น
โดยมีพิกัดตามแกน x และ y สังเกตได้จาก
line(x1, y1, x2, y2)
line(x, 117+y1, x+45,
60+y1);
ellipse(x, 85+y1, 45,
45);
line(x, 107+y1, x, 172+y1);
line(x-25, 199+y1, x,
172+y1);
line(x, 172+y1, x+25,
199+y1); //ฟังก์ชั่นทั้งหมดนี้นำมาวาดตัวคนสำหรับการเล่นเกม
}
void DrawBox() { //ฟังก์ชั่นที่สร้างขึ้นสำหรับการสร้างกล่องที่คน
หรือผู้เล่นในเกมแบกไว้เหนือหัว
fill(#905F37); //สีน้ำตาล
rect(x-47, 20+y1, 95,
40);
}
void keyPressed() { //ฟังก์ชั่นสำหรับการกดปุ่ม
if (keyCode == RIGHT &&
take == 1 && DeadMode == 1) { //กำหนดเงื่อนไขสำหรับการกดปุ่มลูกศรขวาว่า ถ้าค่า take เทียบเท่ากับ 1 และค่า DeadMode เทียบเท่ากับ 1 ให้ทำตามเงื่อนไข หรือผลลัพธ์ต่างๆ
ด้านล่าง
if (x==450) {
x = 550;
y1 = y1 - 85;
DrawPlayer();
}
if (x == 350) {
x =
450;
DrawPlayer();
}
if (x == 250) {
x =
350;
DrawPlayer();
}
if (x == 150) {
x =
250;
DrawPlayer();
}
if (x == 50) {
x =
150;
y1 =
y1 + 85;
DrawPlayer();
}
}
if (keyCode == LEFT &&
take == 1&& DeadMode == 1) { //กำหนดเงื่อนไขสำหรับการกดปุ่มลูกศรซ้ายว่า ถ้าค่า take เทียบเท่ากับ 1 และค่า DeadMode เทียบเท่ากับ 1 ให้ทำตามเงื่อนไข หรือผลลัพธ์ต่างๆ
ด้านล่าง
if (take == 0)
{
x = 50;
y1 = 0;
highscore
= 0;
MenuDisplay();
}
if (x == 150) {
x =
50;
y1 =
y1-85;
DrawPlayer();
DrawBox();
if (ScoreCount == 2) {
highscore
= highscore + 10;
}
ScoreCount = 0;
}
if (x == 250) {
x = 150;
DrawPlayer();
DrawBox();
}
if (x == 350) {
x = 250;
DrawPlayer();
DrawBox();
}
if (x == 450) {
x = 350;
DrawPlayer();
DrawBox();
}
if (x == 550) {
x = 450;
y1 = y1 + 85;
DrawPlayer();
DrawBox();
ScoreCount = 2;
}
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น