วันเสาร์ที่ 19 ตุลาคม พ.ศ. 2556
Explain All Code
float [] y = {
300, 300, 300, 300
}; //กำหนด Array 1 มิติสำหรับการเก็บค่าบนแกน y โดยการใช้ฟังก์ชั่น float ซึ่งเป็นการกำหนดจำนวนทศนิยม
float [] x1 = {
150, 250, 350, 450
}; //กำหนด Array 1 มิติสำหรับการเก็บค่าบนแกน x ซึ่งกำหนดด้วยฟังก์ชั่น float ให้ค่าเป็นทศนิยมด้วยเช่นกัน
int xn = 50; //กำหนดค่าตัวแปร xn ทำได้โดยการใช้ฟังก์ชัน int ซึ่งเป็นการกำหนดจำนวนเต็ม มี 3 ขั้นตอน คือ ประกาศ กำหนด และเรียกใช้ เช่น ตัวแปรนี้เป็นการกำหนดพร้อมกับการประกาศตัวแปร ในรูปนี้เราก็จะกำหนดให้ xn มีค่าเป็น 50 โดยเราก็ต้องอย่าลืมว่าตัวแปร 1 ตัวเก็บค่าได้เพียง 1 ค่าเท่านั้น โดยการเก็บค่าตัวแปรอธิบายได้ง่ายๆคือ ค่าข้างขวากำหนดตัวแปรข้างซ้าย การที่เรานำตัวแปร xn นี้มาไว้นอกฟังก์ชัน (Global variable) นั่นเป็นเพราะ ถ้าเรากำหนดค่าไว้ภายในฟังก์ชันจะทำให้ภาพของเราไม่ขยับ ดังนั้น Global variable จึงเป็นพื้นฐานของ Animation นั่นเอง สำหรับในการสร้างเกมนี้ ตัวแปรทุกตัวที่อยู่นอกฟังก์ชั่นนั้นเป็น Global variable แต่บางตัวที่อยู่ในฟังก์ชั่นนั้นเป็น Local variable ซึ่งจะทำงานได้แค่ภายในฟังก์ชั่น เรากำหนดตัวแปรนี้ เพื่อให้แทนค่าสิ่งต่างๆ ได้
int yn = 350; //กำหนดตัวแปรชนิด Global variable เพื่อให้แทนค่าได้ทั้งฟังก์ชั่น สำหรับตัวนี้ นำมาใช้ในการกำหนดการเคลื่อนไหว และแทนค่าตัวเลขต่างๆ รวมทั้งใช้ในเงื่อนไข
int x = 50; //กำหนดตัวแปรชนิด Global variable เพื่อให้แทนค่าได้ทั้งฟังก์ชั่น สำหรับตัวนี้ นำมาใช้ในการกำหนดการเคลื่อนไหว และแทนค่าตัวเลขต่างๆ รวมทั้งใช้ในเงื่อนไขเช่นกัน
int y1; //กำหนดตัวแปรสำหรับการคำนวณ และเก็บค่าในภายหลัง
int a = 0; //int(random(0, 3)); หรือกำหนดเพื่อใช้ในการสุ่มตัวแปรตั้งแต่ 0 ถึง 3 เพื่อการกำหนดการเคลื่อนไหวของเต่าในเกม ให้มีการเคลื่อนไหวแบบสุ่มเลือกตามฟังก์ชั่น
int [] i = new int [4]; //กำหนดให้ตัวแปร i เป็น array ใหม่สี่ตัว เพื่อให้ใช้ในการนับ และระบุตัวเต่า ตั้งแต่ตัวที่ 1 ถึง 4
int highscore = 0; //กำหนดตัวแปรเพื่อนับคะแนนสูงสุดในแต่ละครั้งที่เล่นเกม โดยเริ่มจาก 0
int b; //กำหนดตัวแปรไว้หาค่าในภายหลัง โดยเฉพาะสำหรับเงื่อนไขต่างๆ ในเกม
int d = 1; //กำหนดตัวแปรสำหรับนับเวลาในการเคลื่อนไหวของเต่า
int take = 0; //กำหนดตัวแปรตัวนี้สำหรับการสร้างฉากแต่ละฉากในเกม
int SmoothOrStep; //ตัวแปรตัวนี้กำหนดขึ้นเพื่อควบคุมการเคลื่อนไหวของเต่าให้เป็นแบบ Smooth หรือแบบราบรื่น และแบบ Step หรือแบบทีละช้าๆ
int del = 0; //ตัวแปรตัวนี้กำหนดขึ้นเพื่อควบคุมการเคลื่อนไหวของเต่า
void setup() { //การใช้ฟังก์ชัน void เป็นการใช้ฟังก์ชันที่ไม่มีการส่งค่ากลับ และเราใช้ void setup เป็นการใช้ฟังก์ชันในการประกาศว่าจะกำหนดค่าหรือตั้งค่าอะไรบางอย่าง และฟังก์ชันนี้ก็จำเป็นสำหรับพื้นฐาน Animation
size(600, 400); //ฟังก์ชั่นสำหรับการกำหนดขนาดของพื้นที่ หรือ size(width, height)
background(98, 255, 243); //ฟังก์ชั่นสำหรับการเติมสีในพื้นหลัง โดยเติมตามแม่สี หรือเครื่องหมาย # ในเครื่องมือ Color Selector โดยสี่ที่ใส่ไปนี้คือ สีฟ้าคราม สำหรับการตกแต่งท้องฟ้าในเกม
}
void draw() { //การใช้ฟังก์ชัน void เป็นการใช้ฟังก์ชันที่ไม่มีการส่งค่ากลับ และเราใช้ void draw เป็นการใช้ฟังก์ชันในการประกาศว่าเราต้องการจะวาดอะไรบางอย่างลงไป นอกจากนี้ยังสามารถเรียกใช้ฟังก์ชั่นที่สร้างขึ้นได้
if(take == 0) { //if() คือฟังก์ชั่นสำหรับการกำหนดเงื่อนไข โดย if ตัวนี้กำหนดเงื่อนไขว่า ในกรณีที่ค่า take เทียบเท่า หรือเท่ากับ 0 ทำตามไขที่อยู่ภายใน แล้วจะเห็นผลลัพธ์แสดงออกมาบนจอ การทำตามเงื่อนไข อาจมีการทำซ้ำไปซ้ำมาเรื่อยๆ
Menu(); //ให้ฟังก์ชั่นที่ชื่อว่า Menu หรือฟังก์ชั่นแสดงหน้าจอหลักที่สร้างขึ้น ทำงาน
}
else if(take == 1) { //คำสั่ง if - else เป็นการกำหนดเงื่อนไขของตัวแปร (ถ้า-แล้ว) หรือกำหนดเงื่อนไขอีกกรณีหนึ่ง หรือใช้ else สำหรับการกำหนดเงื่อนไขมากกว่าหนึ่งกรณี ในกรณีนี้ ถ้าค่า take มีค่าเทียบเท่า หรือเท่ากับ 1 ให้ทำตามเงื่อนไขด้านล่าง อาจมีการทำซ้ำไปซ้ำมา เช่นกัน
stroke(0); //คำสั่ง stroke คือการกำหนดสีของเส้น โดยเราใช้เครื่องมือการเลือกสีช่วยในโปรแกรม Processing ไปที่ tools ---> color selector -----> ทำการเลือกสีที่ต้องการและกด ctrl+c เพื่อทำการ copy โค้ดสีดังกล่าว และกด ctrl+v เพื่อวางและใช้โค้ดสีที่เราเลือก หรือเราอาจใช้วิธีการเขียนตัวเลขตามแม่สีก็ได้ เหมือนกับฟังก์ชั่น background วิธีนี้ทำให้เราได้สีที่เราต้องการมากกว่า และเราสามารถเลือกความละเอียดสีเองได้อีกด้วย สีที่ใส่ไปนี้คือ สีดำ
Sea(); //เรียกใช้ฟังก์ชั่น Sea() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างทะเล
TwoShores(); //เรียกใช้ฟังก์ชั่น TwoShores() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างฝั่งสองฝั่งในเกม
Turtle(del); //เรียกใช้ฟังก์ชั่น Turtle() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างเต่า พร้อมกับมี parameter ที่ชื่อ del ซึ่ง parameter เป็นค่าที่สามารถแทนค่าใดๆ ภายในฟังก์ชั่นได้
Box(); //เรียกใช้ฟังก์ชั่น Box() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างกล่อง
Player(); //เรียกใช้ฟังก์ชั่น Player() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างตัวผู้เล่น
Score(); //เรียกใช้ฟังก์ชั่น Score() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการนับคะแนน
Dead(); //เรียกใช้ฟังก์ชั่น Dead() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการกำหนดเงื่อนไขในกรณีที่แพ้
}
del = del+1; //การกำหนดให้ ตัวแปร del ที่เรากำหนดขึ้นเพิ่มค่าทีละ 1 เราจึงเห็นว่า เต่ามีการเคลื่อนไหวเพราะค่า del ที่เพิ่มขึ้น
}
void TwoShores() { //ฟังก์ชั่นที่สร้างขึ้นสำหรับการสร้างฝั่งสองฝั่ง
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 Sea() { //ฟังก์ชั่นที่สร้างขึ้นสำหรับการวาดทะเล เรียกใช้ในฟังก์ชั่นหลักสำหรับการวาด void draw เช่นกัน
fill(#0F8598); //สีน้ำเงินเข้ม
rect(100, 300, 600, 500);
}
void Turtle(int del) { //ฟังก์ชั่นที่สร้างขึ้นสำหรับการสร้างเต่า พร้อมมี parameter
background(98, 255, 243); //สีฟ้าคราม
Sea(); //เรียกใช้ฟังก์ชั่นสำหรับการวาดทะเล
TwoShores(); //เรียกใช้ฟังก์ชั่นสำหรับการวาดฝั่งสองฝั่ง
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(a == 0) { //กำหนดเงื่อนไขสำหรับเต่าตัวที่หนึ่ง
i[0] = i[0]+1; //ระบุให้ค่า i ที่ตำแหน่งแรกใน array มีค่าเพิ่มขึ้นทีละ 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 == 1) { //กำหนดเงื่อนไข ถ้าค่า SmoothOrStep มีค่าเทียบเท่ากับ 1 จะกำหนดให้มีการเคลื่อนไหวแบบ Smooth
y[0] = y[0]+0.8; //การเคลื่อนไหวของเต่าจะมีการเคลื่อนไหวลงอย่างช้าๆ บนพิกัด y ตามค่า y ที่ตำแหน่งแรกใน Array โดย y[0] มีค่าเพิ่มขึ้นทีละ 0.8
}
else if(SmoothOrStep == 2) { //กำหนดเงื่อนไข ถ้าค่า SmoothOrStep มีค่าเทียบเท่ากับ 1 จะกำหนดให้มีการเคลื่อนไหวแบบ 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 == 1) { //ถ้าค่า SmoothOrStep เทียบเท่ากับ 1 การเคลื่อนไหวของเต่าจะเป็น Smooth
y[0] = y[0]-0.8;
}
else if(SmoothOrStep == 2) { //ถ้าค่า SmoothOrStep เทียบเท่ากับ 1 การเคลื่อนไหวของเต่าจะเป็น Step
if(del%10 == 0) {
y[0] = y[0]-8;
}
}
} //ทั้งหมดนี้เป็นการกำหนดการเคลื่อนไหวสำหรับเต่าตัวแรก และเงื่อนไขสำหรับเต่าตัวอื่นก็ไม่แตกต่างกันมาก
if(i[0] >= int (random(240, 1000))) { //ถ้าค่า i[0] มีค่ามากกว่าหรือเท่ากับจำนวนเต็มที่สุ่มตั้งแต่ 240 ถึง 1,000
a = int(random(0, 4)); //a มีค่าเท่ากับจำนวนเต็มที่สุ่มตั้งแต่ 0 ถึง 4 กำหนดไว้สำหรับการเคลื่อนไหวแบบสุ่มของเต่า
y[0] = 300;
i[0] = 0;
}
}
if(a == 1) { //ถ้าค่า a มีค่าเทียบเท่ากับ 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 == 1) {
y[1] = y[1]+0.8;
}
else if(SmoothOrStep == 2) {
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 == 1) {
y[1] = y[1]-0.8;
}
else if(SmoothOrStep == 2) {
if(del%10 == 0) {
y[1] = y[1]-8;
}
}
}
if(i[1] >= int (random(240, 1000))) {
a = int(random(0, 4));
y[1] = 300;
i[1] = 0;
}
} //เงื่อนไขสำหรับการเคลื่อนไหวของเต่าตัวที่สองนี้ค่อนข้างคล้ายกับเต่าตัวแรก แต่มีการเปลี่ยนแปลงเล็กน้อย
if(a == 2) { //สำหรับเต่าตัวที่สาม ถ้าค่า a เทียบเท่ากับ 2 ผลจะเป็นตามโค้ดด้านล่าง
i[2] = i[2]+1; //ค่า i ในตำแหน่งนี้มีค่าเพิ่มขึ้นทีละ 1
if(y[2] == 300) {
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 == 1) {
y[2] = y[2]+0.8;
}
else if(SmoothOrStep == 2) {
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 == 1) {
y[2] = y[2]-0.8;
}
else if(SmoothOrStep == 2) {
if(del%10 == 0) {
y[2] = y[2]-8;
}
}
}
if(i[2] >= int (random(240, 1000))) {
a = int(random(0, 4));
y[2] = 300;
i[2] = 0;
}
} //เงื่อนไขในการเคลื่อนไหวของเต่าตัวที่สามนี้คล้ายกับตัวที่หนึ่งและสอง
if((a == 3)||(a == 4)) { //ถ้า a มีค่าเทียบเท่ากับ 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 == 1) {
y[3] = y[3]+0.8;
}
else if(SmoothOrStep == 2) {
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 == 1) {
y[3] = y[3]-0.8;
}
else if(SmoothOrStep == 2) {
if(del%10 == 0) {
y[3] = y[3]-8;
}
}
}
if(i[3] >= int (random(240, 1000))) {
a = int(random(0, 4));
y[3] = 300;
i[3] = 0;
}
} //เงื่อนไขสำหรับตัวที่สี่นี้คล้ายกับตัวอื่นๆ เพียงแค่ดัดแปลงเล็กน้อย
}
void Score() { //ฟังก์ชั่นสำหรับการนับคะแนน
fill(0); //เติมสีดำ
textSize(50); //ฟังก์ชั่นสำหรับการเปลี่ยนขนาดของข้อความ โดยการใส่ตัวเลขลงไปในวงเล็บ
text(highscore, 295, 50); //ฟังก์ชั่นสำหรับการเขียนข้อความที่ตำแหน่งพิกัด x และ y โดยสังเกตได้จาก tect(“Message”, x, y) ฟังก์ชั่นตัวนี้พิมพ์ค่าคะแนนสูงสุดที่คำนวณได้จากอีกฟังก์ชั่นชุดหนึ่ง
}
void Menu() { //ฟังก์ชั่นที่สร้างสำหรับการสร้างเมนู หรือหน้าจอหลัก
background(62, 189, 227); //กำหนดพื้นหลังสีฟ้า
NewTurtles(xn+297, yn-150); //วาดฟังก์ชั่น NewTurtles หรือฟังก์ชั่นเต่าเคลื่อนไหวถอยหลังที่ตำแหน่งตามค่า parameter
NewTwoShores();//วาดฟังก์ชั่น NewTwoShores หรือฟังก์ชั่นฝั่งสองฝั่งแบบวงรี
SmoothOrStepButton(); //เรียกใช้ฟังก์ชั่น SmoothOrStepButton(); หรือฟังก์ชั่นปุ่มกดบนเมนูเพื่อเลือกการเล่นเกมที่มีการเคลื่อนไหวแบบ Smooth หรือ Step
if(yn < 450) { //ถ้า yn มีค่าน้อยกว่า 450
yn = yn-4; //yn มีค่าลดลงทีละ 4
}
else if(yn < 300) { //กำหนดเงื่อนไขอีกอย่างว่า ถ้า yn มีค่าน้อยกว่า 300
yn = yn+6; //yn มีค่าเพิ่มขึ้นทีละ 6
}
else if(xn > 250) { //กำหนดเงื่อนไขอีกอย่างว่า ถ้า xn มีค่ามากกว่า 250
xn = xn+4; //xn มีค่าเพิ่มขึ้นทีละ 4
}
}
void SmoothOrStepButton() { //ฟังก์ชั่นที่สร้างขึ้นสำหรับปุ่มกด Smooth และ Step บนหน้าจอหลักเมนู
stroke(#289318); //เติมเส้นสีเขียวเข้ม
strokeWeight(10); //เพิ่มความหนาของเส้น
fill(#31ED16); //สีน้ำตาลเข้ม
rect(125, 30, 360, 90); //สร้างเป็นกล่องชื่อเกม
fill(0);
textSize(55);
text("Turtle Bridge", 131, 92); //พิมพ์ข้อความเพื่อสร้างชื่อเกมบนเมนู โดยทับบนกล่องที่ระบุไว้
stroke(#E6EA05); //เติมสีเหลือง
fill(#FAA505); //เติมสีส้มเหลือง
rect(90, 160, 200, 90); //สร้างกล่องเป็นกล่องชื่อ Smooth
fill(0);
textSize(50);
text("Smooth", 98, 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 = 1;
}
if(mousePressed && mouseX > 310 && mouseX < 510 && mouseY > 160 && mouseY < 250) { //กำหนดเงื่อนไขสำหรับการกดปุ่มภายในกล่อง Step
take = 1;
SmoothOrStep = 2;
}
}
void Dead() { //ฟังก์ชั่นที่กำหนดเงื่อนไขในกรณีที่เล่นแพ้
if((i[0] >= 30) && (x == x1[0])) {
d = 0;
}
if((i[1] >= 30) && (x == x1[1])) {
d = 0;
}
if((i[2] >= 30) && (x == x1[2])) {
d = 0;
}
if((i[3] >= 30) && (x == x1[3])) {
d = 0;
}
if(d == 0) {
background(62, 189, 227);
NewTurtles(xn+185, yn-150);
NewTwoShores();
if(yn < 450) {
yn = yn-4;
}
else if(yn < 300) {
yn = yn+6;
}
else if(xn > 250) {
xn = xn+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;
d = 1;
x = 50;
y1 = 0;
}
}
}
void NewTwoShores() { //ฟังก์ชั่นสำหรับการวาดฝั่งสองฝั่งในหน้าจอเมนูหลัก และ 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 NewTurtles(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 Player() { //ฟังก์ชั่นสำหรับการสร้างตัวผู้เล่น
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 Box() { //ฟังก์ชั่นที่สร้างขึ้นสำหรับการสร้างกล่องที่คน หรือผู้เล่นในเกมแบกไว้เหนือหัว
fill(#905F37); //สีน้ำตาล
rect(x-47, 20+y1, 95, 40);
}
void keyPressed() { //ฟังก์ชั่นสำหรับการกดปุ่ม
if(keyCode == RIGHT && take == 1 && d == 1) { //กำหนดเงื่อนไขสำหรับการกดปุ่มลูกศรขวาว่า ถ้าค่า take เทียบเท่ากับ 1 และค่า d เทียบเท่ากับ 1 ให้ทำตามเงื่อนไข หรือผลลัพธ์ต่างๆ ด้านล่าง
if(x == 450) {
x = 550;
y1 = y1 - 85;
Player();
}
if(x == 350) {
x = 450;
Player();
}
if(x == 250) {
x = 350;
Player();
}
if(x == 150) {
x = 250;
Player();
}
if(x == 50) {
x = 150;
y1 = y1 + 85;
Player();
}
}
if(keyCode == LEFT && take == 1 && d == 1) { //กำหนดเงื่อนไขสำหรับการกดปุ่มลูกศรซ้ายว่า ถ้าค่า take เทียบเท่ากับ 1 และค่า d เทียบเท่ากับ 1 ให้ทำตามเงื่อนไข หรือผลลัพธ์ต่างๆ ด้านล่าง
if(take == 0) {
x = 50;
y1 = 0;
highscore = 0;
Menu();
}
if(x == 150) {
x = 50;
y1 = y1-85;
Player();
Box();
if(b == 2) {
highscore = highscore + 10;
}
b = 0;
}
if(x == 250) {
x = 150;
Player();
Box();
}
if(x == 350) {
x = 250;
Player();
Box();
}
if(x == 450) {
x = 350;
Player();
Box();
}
if(x == 550) {
x = 450;
y1 = y1 + 85;
Player();
Box();
b = 2;
}
}
}
A2 Submission
ชื่อเกม : Turtle Bridge
รูปแบบเกม : Smooth & Step
code รันได้บน Program Processing
การออกแบบฟังก์ชัน :
Global Variable ที่ใช้ในโปรแกรม :
เกม : (STEP)
: (SMOOTH)
Turtle Bridge
Turtle Bridge
Turtle Bridge เป็นวิดีโอเกมยี่ห้อ Game & Watch แบบจอกว้างที่ถูกวางแผงในปี ค.ศ. 1982 โดยบริษัท Nintendo ในเกมนี้ ผู้เล่นต้องนำตัวละครจากอีกฝั่งหนึ่งของทะเลสาบข้ามไปยังอีกฝั่งหนึ่งโดยการกระโดดข้ามกระดองเต่าที่โผล่ขึ้นมาจากน้ำ ถ้าผู้เล่นกระโดดข้ามเต่าตัวหนึ่งผิดจังหวะ ผู้เล่นจะต้องกลับไปที่จุดเริ่มต้น ความจริงที่ว่า เต่าจะรับตัวละครข้ามไปให้ถึงอีกฝั่งหนึ่งของทะเลสาบนั้น คือที่ที่ชื่อของเกมเกิดขึ้น
เนื้อหาภายในกล่องของเกมประกอบด้วยหน่วยยูนิตของ Game & Watch, แบตเตอรี่รุ่น LR43, กระดาษบอกคำเตือน, สติ๊กเกอร์แบตเตอรี่, และในฉบับพิมพ์ครั้งแรกนั้น ยังมีกระดาษบอกข้อผิดพลาดซึ่งเตือนผู้เล่นถึงข้อผิดพลาดในแผ่นพับคำแนะนำของเกมซึ่งภายหลังถูกแก้ในรูปแบบสำหรับอนาคต หมายเลขต้นแบบสำหรับเกมคือ TL-28 เกมถูกขายได้ประมาณ 500,000 ชุดทั่วโลก มันยังไม่เป็นที่รู้จักแน่ชัดว่า รูปแบบขนาดของเกมเคยถูกวางแผงหรือไม่ มีรูปแบบของ Bosch ของเกมประมาณ 200 ถึง 500 ชุดที่ถูกวางแผงผ่านการสนับสนุนเท่านั้น
รูปแบบดั้งเดิมและตัวผู้เล่นที่ถูกพัฒนาขึ้นใหม่คล้ายกับมาริโอถูกปล่อยในวิดีโอเกมยี่ห้อ Game Boy Color หรือ Game & Watch Gallery 3 โดยสรุปแล้ว ผู้พัฒนา และผู้วางแผงคือ บริษัท Nintendo ถูกวางแผงในวันที่ 1 กุมภาพันธ์ ปี ค.ศ. 1982 ยี่ห้อ Game & Watch และเป็นประเภทปริศนา
ในอันดับแรกของการสร้างเกม ต้องรวบรวม และสร้างฟังก์ชั่นต่างๆ ที่ใช้ในการสร้างพื้นหลังฉาก เป็นอย่างแรก โดยฟังก์ชั่นที่ใช้ในการสร้างพื้นหลังนี้ มีดังนี้
1. Sea(); หรือฟังก์ชั่นสำหรับการสร้างทะเล
2. TwoShores(); หรือฟังก์ชั่นสำหรับการสร้างฝั่งสองฝั่งในเกม
3. Turtle(); หรือฟังก์ชั่นสำหรับการสร้างเต่า
ต่อมา เราต้องสร้างฟังก์ชั่นที่ใช้สำหรับการสร้างตัวคนแบกของ สำหรับในเกมนี้ เรากำหนดให้ผู้เล่นถือของจากอีกฝั่งหนึ่งไป โดยกล่องที่อยู่ด้านบนนั้นยังคงติดอยู่กับตัว ผู้เล่นจะต้องข้ามเต่าไปอย่างระมัดระวัง เวลาที่เต่าดำน้ำ ตัวเต่านั้นจะมีสีแดงทั้งตัว แต่เวลาขึ้น จะมีสีเขียวอ่อนแทน เวลาที่เต่ายังคงมีสีปกติ คือยังข้ามไปได้ เมื่อไปกลับได้ครบ 1 รอบ คะแนนจะเพิ่มขึ้นทีละ 10 คะแนน ผู้เล่นสามารถเล่นไปได้เรื่อยๆ ตราบเท่าที่ยังไม่ตายในเกม ฟังก์ชั่นที่ใช้สำหรับสร้างตัวผู้เล่นนั้น มีดังนี้
1. Player(); หรือฟังก์ชั่นสำหรับการสร้างตัวผู้เล่น
2. Box(); หรือฟังก์ชั่นสำหรับการสร้างกล่อง
ในการเล่นเกมนั้น เวลาเปิดมาจะมีหน้าจอให้เลือกระหว่างปุ่ม Smooth และ Step สามารถเลือกเล่นจากแบบไหนก่อนก็ได้ โดยในการเล่นแบบ Smooth นั้น จะเป็นการเล่นแบบเร็ว แต่แบบ Step จะค่อยๆ ไปทีละช้าๆ ในการควบคุมตัวละครนั้น เราจะใช้ปุ่มลูกศรซ้าย และขวา ตามฟังก์ชั่นที่กำหนดไว้ เพียงสองปุ่มนี้เท่านั้น
ในฟังก์ชั่นทุกอันที่ใช้นั้น มีเพียง Turtle();, Dead();, และ KeyPressed(); เท่านั้นที่มีการกำหนดเงื่อนไขไว้ภายใน เพื่อให้เป็นการควบคุมการเคลื่อนไหวของเต่าแบบสุ่ม การหยุดเกมเวลาที่ผู้เล่นตาย และการควบคุมการเคลื่อนไหวของตัวละครโดยใช้ปุ่มลูกศรซ้ายและขวา ตามลำดับ การเคลื่อนไหวของเต่าจะเป็นไปตามพิกัดในแกน Y การหยุดเกมเวลาที่ผู้เล่นตายคือ กรณีที่ผู้เล่นก้าวพลาดตกลงไปในน้ำ โดยเต่าทุกตัว และผู้เล่นจะหายไป และมีข้อความว่า “Game Over” ขึ้นมาแทน ส่วนการนับคะแนน หรือ Highscore นั้นจะอยู่ในฟังก์ชั่น KeyPressed(); แต่ปรากฏเป็นข้อความ หรือแค่ตัวเลขบนจอ โดยทำงานในฟังก์ชั่น text(); ซึ่งระบุให้ทำงานใน void draw นอกจากนี้ฟังก์ชั่นที่สร้างขึ้นส่วนใหญ่ล้วนทำงานในฟังก์ชั่นหลักสำหรับการวาดนี้
Turtle Bridge Game
float [] y = { 300, 300, 300, 300}; //กำหนด Array 1 มิติสำหรับการเก็บค่าบนแกน y โดยการใช้ฟังก์ชั่น float ซึ่งเป็นการกำหนดจำนวนทศนิยม
float [] x1 = {150, 250, 350, 450}; //กำหนด Array 1 มิติสำหรับการเก็บค่าบนแกน x
int xn = 50; //กำหนดค่าตัวแปร xn ทำได้โดยการใช้ฟังก์ชัน int ซึ่งเป็นการกำหนดจำนวนเต็ม มี 3 ขั้นตอน คือ ประกาศ กำหนด และเรียกใช้ เช่น ตัวแปรนี้เป็นการกำหนดพร้อมกับการประกาศตัวแปร ในรูปนี้เราก็จะกำหนดให้ xn มีค่าเป็น 50 โดยเราก็ต้องอย่าลืมว่าตัวแปร 1 ตัวเก็บค่าได้เพียง 1 ค่าเท่านั้น โดยการเก็บค่าตัวแปรอธิบายได้ง่ายๆคือ ค่าข้างขวากำหนดตัวแปรข้างซ้าย การที่เรานำตัวแปร xn นี้มาไว้นอกฟังก์ชัน (global variable) นั่นเป็นเพราะ ถ้าเรากำหนดค่าไว้ภายในฟังก์ชันจะทำให้ภาพของเราไม่ขยับ ดังนั้น global variable จึงเป็นพื้นฐานของ animation นั่นเอง สำหรับในการสร้างเกมนี้ ตัวแปรทุกตัวที่อยู่นอกฟังก์ชั่นนั้นเป็น global variable แต่บางตัวที่อยู่ในฟังก์ชั่นนั้นเป็น local variable ซึ่งจะทำงานได้แค่ภายในฟังก์ชั่น เรากำหนดตัวแปรนี้ เพื่อให้แทนค่าสิ่งต่างๆ ได้
int yn = 350;
int x = 50;
int y1;
int a = 0; //int(random(0, 3));
int [] i = new int [4];
int highscore = 0; //กำหนดตัวแปรเพื่อนับคะแนนสูงสุดในแต่ละครั้งที่เล่นเกม
int b;
int d = 1;
int take = 0; //กำหนดตัวแปรเพื่อสร้างฉากแต่ละฉากในการเล่นเกม
int SmoothOrStep; //กำหนดตัวแปรเพื่อสร้างการเคลื่อนไหวแบบ Smooth หรือ Step
int del = 0;
void setup() { //การใช้ฟังก์ชัน void เป็นการใช้ฟังก์ชันที่ไม่มีการส่งค่ากลับ และเราใช้ void setup เป็นการใช้ฟังก์ชันในการประกาศว่าจะกำหนดค่าหรือตั้งค่าอะไรบางอย่าง และฟังก์ชันนี้ก็จำเป็นสำหรับพื้นฐาน Animation
size(600, 400); //กำหนดขนาดของพื้นที่ หรือ size(width, height)
background(98, 255, 243); //ฟังก์ชั่นสำหรับการเติมสีในพื้นหลัง โดยเติมตามแม่สี หรือเครื่องหมาย # ในเครื่องมือ Color Selector โดยสี่ที่ใส่ไปนี้คือ สีฟ้าคราม สำหรับการตกแต่งท้องฟ้า
}
void draw() { //การใช้ฟังก์ชัน void เป็นการใช้ฟังก์ชันที่ไม่มีการส่งค่ากลับ และเราใช้ void draw เป็นการใช้ฟังก์ชันในการประกาศว่าเราต้องการจะวาดอะไรบางอย่างลงไป
if (take == 0) { //กำหนดเงื่อนไขว่า ในกรณีที่ค่า take เทียบเท่า หรือเท่ากับ 0 ทำตามไขที่อยู่ภายใน แล้วจะเห็นผลลัพธ์แสดงออกมาบนจอ การทำตามเงื่อนไข อาจมีการทำซ้ำไปซ้ำมาเรื่อยๆ
Menu(); //ให้ฟังก์ชั่นที่ชื่อว่า Menu หรือฟังก์ชั่นแสดงหน้าจอหลักที่สร้างขึ้น ทำงาน
} //คำสั่ง if เป็นการกำหนดเงื่อนไข
else if (take == 1) { //คำสั่ง if - else เป็นการกำหนดเงื่อนไขของตัวแปร (ถ้า-แล้ว) หรือกำหนดเงื่อนไขอีกกรณีหนึ่ง หรือใช้ else สำหรับการกำหนดเงื่อนไขมากกว่าหนึ่งกรณี ในกรณีนี้ ถ้าค่า take มีค่าเทียบเท่า หรือเท่ากับ 1 ให้ทำตามเงื่อนไขด้านล่าง อาจมีการทำซ้ำไปซ้ำมา เช่นกัน
stroke(0); //คำสั่ง stroke คือการกำหนดสีของเส้น โดยเราใช้เครื่องมือการเลือกสีช่วยในโปรแกรม Processing ไปที่ tools ---> color selector -----> ทำการเลือกสีที่ต้องการและกด ctrl+c เพื่อทำการ copy โค้ดสีดังกล่าว และกด ctrl+v เพื่อวางและใช้โค้ดสีที่เราเลือก หรือเราอาจใช้วิธีการเขียนตัวเลขตามแม่สีก็ได้ เหมือนกับฟังก์ชั่น background วิธีนี้ทำให้เราได้สีที่เราต้องการมากกว่า และเราสามารถเลือกความละเอียดสีเองได้อีกด้วย สีที่ใส่ไปนี้คือ สีดำ
Sea(); //เรียกใช้ฟังก์ชั่น Sea() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างทะเล
TwoShores();//เรียกใช้ฟังก์ชั่น TwoShores() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างฝั่งสองฝั่งในเกม
Turtle(del); //เรียกใช้ฟังก์ชั่น Turtle() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างเต่า พร้อมกับมี parameter ที่ชื่อ del ซึ่ง parameter เป็นค่าที่สามารถแทนค่าใดๆ ภายในฟังก์ชั่นได้
Box(); //เรียกใช้ฟังก์ชั่น Box() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างกล่อง
Player(); //เรียกใช้ฟังก์ชั่น Player() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการสร้างตัวผู้เล่น
Score(); //เรียกใช้ฟังก์ชั่น Score() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการนับคะแนน
Dead(); //เรียกใช้ฟังก์ชั่น Dead() หรือฟังก์ชั่นที่ออกแบบไว้สำหรับการกำหนดเงื่อนไขในกรณีที่แพ้
}
del = del+1; //8
}
void TwoShores() {
fill(#AA7815); //Brown Color For The Beginning
rect(0, 200, 100, 200);
fill(#0F9817); //Green Color For The Other Shore
rect(500, 200, 100, 200);
fill(#BF9443);
rect(520, 120, 80, 80);
fill(#F2C211);
rect(533, 133, 55, 55);
}
void Sea() {
fill(#0F8598);
rect(100, 300, 600, 500);
}
void Turtle(int del) {
background(98, 255, 243);
Sea();
TwoShores();
fill(#5BFA30);
ellipse(x1[0]+35, y[0]-25, 35, 35);
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 (a == 0) {
i[0] = i[0]+1;
if (y[0]==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==1) {
y[0] = y[0]+0.8;
}
else if (SmoothOrStep==2) {
if (del%10==0) {
y[0] = 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==1) {
y[0] = y[0]-0.8;
}
else if (SmoothOrStep==2) {
if (del%10==0) {
y[0] = y[0]-8;
}
}
} //First Turtle
if (i[0]>=int (random(240, 1000))) {
a = int(random(0, 4));
y[0] = 300;
i[0] = 0;
}
}
if (a == 1) {
i[1] = i[1]+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==1) {
y[1] = y[1]+0.8;
}
else if (SmoothOrStep==2) {
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==1) {
y[1] = y[1]-0.8;
}
else if (SmoothOrStep==2) {
if (del%10==0) {
y[1] = y[1]-8;
}
}
} //First Turtle
if (i[1]>=int (random(240, 1000))) {
a = int(random(0, 4));
y[1] = 300;
i[1] = 0;
}
}
if (a == 2) {
i[2] = i[2]+1;
if (y[2]==300) {
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==1) {
y[2] = y[2]+0.8;
}
else if (SmoothOrStep==2) {
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==1) {
y[2] = y[2]-0.8;
}
else if (SmoothOrStep==2) {
if (del%10==0) {
y[2] = y[2]-8;
}
}
} //First Turtle
if (i[2]>=int (random(240, 1000))) {
a = int(random(0, 4));
y[2] = 300;
i[2] = 0;
}
}
if ((a == 3)||(a == 4)) {
i[3] = i[3]+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==1) {
y[3] = y[3]+0.8;
}
else if (SmoothOrStep==2) {
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==1) {
y[3] = y[3]-0.8;
}
else if (SmoothOrStep==2) {
if (del%10==0) {
y[3] = y[3]-8;
}
}
} //First Turtle
if (i[3]>=int (random(240, 1000))) {
a = int(random(0, 4));
y[3] = 300;
i[3] = 0;
}
}
}
void Score() {
fill(0);
textSize(50);
text(highscore, 295, 50);
}
void Menu() {
background(62, 189, 227);
NewTurtles(xn+297, yn-150);
NewTwoShores();
SmoothOrStepButton();
if (yn < 450) {
yn=yn-4;
}
else if (yn < 300) {
yn=yn+6;
}
else if (xn > 250) {
xn = xn+4;
}
}
void SmoothOrStepButton() { //วาดของที่อยู่บนฝั่ง
stroke(#289318);
strokeWeight(10);
fill(#31ED16); //สีน้ำตาลเข้ม
rect(125, 30, 360, 90);
fill(0);
textSize(55);
text("Turtle Bridge", 131, 92);
stroke(#E6EA05);
fill(#FAA505);
rect(90, 160, 200, 90);
fill(0);
textSize(50);
text("Smooth", 98, 223);
stroke(#E6EA05);
fill(#FAA505);
rect(310, 160, 200, 90);
fill(0);
textSize(50);
text("Step", 358, 223);
if (mousePressed&&mouseX>90&&mouseX<290&&mouseY>160&&mouseY<250) {
take=1;
SmoothOrStep=1;
}
if (mousePressed&&mouseX>310&&mouseX<510&&mouseY>160&&mouseY<250) {
take=1;
SmoothOrStep=2;
}
}
void Dead() {
if ((i[0]>=30)&&(x == x1[0])) {
d = 0;
}
if ((i[1]>=30)&&(x == x1[1])) {
d = 0;
}
if ((i[2]>=30)&&(x == x1[2])) {
d = 0;
}
if ((i[3]>=30)&&(x == x1[3])) {
d = 0;
}
if (d==0) {
background(62, 189, 227);
NewTurtles(xn+297, yn-150);
NewTwoShores();
if (yn < 450) {
yn=yn-4;
}
else if (yn < 300) {
yn=yn+6;
}
else if (xn > 250) {
xn = xn+4;
}
fill(#FF3300);
textSize(50);
text("Game Over", 170, 80);
fill(#040A6A);
text("Your Score : "+highscore, 100, 165);
fill(#90FF8B);
rect(95, 210, 410, 80);
fill(0);
text("Return To Menu", 105, 268);
if (mousePressed&&mouseX>95&&mouseX<505&&mouseY>250&&mouseY<330) {
take=0;
highscore = 0;
d = 1;
x = 50;
y1 = 0;
}
}
}
void NewTwoShores() { //วาดฝั่งสองฝั่ง
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 NewTurtles(int xt, int yt) {
while (xt < 600) {
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 Player() {
strokeWeight(2);
fill(#FFCD81);
line(x-45, 60+y1, x, 117+y1);
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 Box() {
fill(#905F37);
rect(x-47, 20+y1, 95, 40);
}
void keyPressed() {
background(98, 255, 243);
Sea();
TwoShores();
Turtle(del);
if (keyCode == RIGHT) {
if (x==450) {
x = 550;
y1 = y1 - 85;
Player();
}
if (x==350) {
x = 450;
Player();
}
if (x==250) {
x = 350;
Player();
}
if (x == 150) {
x = 250;
Player();
}
if (x == 50) {
x = 150;
y1 = y1 + 85;
Player();
}
if (d==0) {
Dead();
x=0;
}
}
if (keyCode == LEFT) {
if (x == 150) {
x = 50;
y1 = y1-85;
Player();
Box();
if (b == 2) {
highscore = highscore + 10;
}
b = 0;
}
if (x == 250) {
x = 150;
Player();
Box();
}
if (x == 350) {
x = 250;
Player();
Box();
}
if (x == 450) {
x = 350;
Player();
Box();
}
if (x == 550) {
x = 450;
y1 = y1 + 85;
Player();
Box();
b = 2;
}
if (d==0) {
Dead();
x=0;
}
}
}
float [] y = { 300, 300, 300, 300}; //กำหนด Array 1 มิติสำหรับการเก็บค่าบนแกน y
float [] x1 = {150, 250, 350, 450}; //กำหนด Array 1 มิติสำหรับการเก็บค่าบนแกน x
int x = 50; //สำหรับการแทนค่าตัวแปร และกำหนดเงื่อนไข
int y1; //กำหนดตัวแปรสำหรับการหาค่าในเงื่อนไขภายหลัง
int a = 0; //int(random(0, 3)); ใช้สำหรับการนับ และเพิ่ม
int [] i = new int [4]; //กำหนดตัวแปรใหม่ของ Array
int highscore = 0; //กำหนดตัวแปรเพื่อการนับคะแนนสูงสุด
int b;
int d = 1;
void setup() { //ฟังก์ชั่นหลักที่ใช้ในการกำหนดค่า และติดตั้งสิ่งต่างๆ รวมทั้งเรียกใช้
size(600, 400); //กำหนดขนาดของพื้นที่ หรือ size(width, height)
background(98, 255, 243); //ฟังก์ชั่นสำหรับการเติมสีในพื้นหลัง โดยเติมตามแม่สีในเครื่องมือ Color Selector
}
void draw() { //ฟังก์ชั่นหลักที่ใช้ในการวาด และเรียกใช้ฟังก์ชั่น
Sea(); //เรียกใช้ฟังก์ชั่น Sea();
TwoShores();
Turtle();
Box();
Player();
Dead();
fill(0);
textSize(50);
text(highscore,300,50);
}
void TwoShores() {
fill(#AA7815); //Brown Color For The Beginning
rect(0, 200, 100, 200);
fill(#0F9817); //Green Color For The Other Shore
rect(500, 200, 100, 200);
fill(#BF9443);
rect(520, 120, 80, 80);
fill(#F2C211);
rect(533, 133, 55, 55);
}
void Sea() {
fill(#0F8598);
rect(100, 300, 600, 500);
}
void Turtle() {
background(98, 255, 243);
Sea();
TwoShores();
fill(#5BFA30);
ellipse(x1[0]+35, y[0]-25, 35, 35);
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(a == 0) {
i[0] = i[0]+1;
if(y[0]==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);
y[0] = y[0]+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);
y[0] = y[0]-0.8;
} //First Turtle
if(i[0]>=int (random(240, 1000))){
a = int(random(0,4));
y[0] = 300;
i[0] = 0;
}
}
if(a == 1) {
i[1] = i[1]+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);
y[1] = y[1]+0.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);
y[1] = y[1]-0.8;
} //First Turtle
if(i[1]>=int (random(240, 1000))) {
a = int(random(0,4));
y[1] = 300;
i[1] = 0;
}
}
if(a == 2) {
i[2] = i[2]+1;
if(y[2]==300){
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);
y[2] = y[2]+0.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);
y[2] = y[2]-0.8;
} //First Turtle
if(i[2]>=int (random(240, 1000))) {
a = int(random(0,4));
y[2] = 300;
i[2] = 0;
}
}
if((a == 3)||(a == 4)) {
i[3] = i[3]+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);
y[3] = y[3]+0.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);
y[3] = y[3]-0.8;
} //First Turtle
if(i[3]>=int (random(240, 1000))) {
a = int(random(0,4));
y[3] = 300;
i[3] = 0;
}
}
}
void Dead() {
if((i[0]>=30)&&(x == x1[0])){
d = 0;
}
if((i[1]>=30)&&(x == x1[1])){
d = 0;
}
if((i[2]>=30)&&(x == x1[2])){
d = 0;
}
if((i[3]>=30)&&(x == x1[3])){
d = 0;
}
if(d==0){
background(98, 255, 243);
Sea();
TwoShores();
fill(#FF3300);
textSize(50);
text("Game Over", 180, 200);
}
}
void Player() {
strokeWeight(2);
fill(#FFCD81);
line(x-45, 60+y1, x, 117+y1);
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 Box() {
fill(#905F37);
rect(x-47, 20+y1, 95, 40);
}
void keyPressed() {
background(98, 255, 243);
Sea();
TwoShores();
Turtle();
if(keyCode == RIGHT) {
if(x==450) {
x = 550;
y1 = y1 - 85;
Player();
}
if(x==350) {
x = 450;
Player();
}
if(x==250) {
x = 350;
Player();
}
if(x == 150) {
x = 250;
Player();
}
if(x == 50){
x = 150;
y1 = y1 + 85;
Player();
}
}
if(keyCode == LEFT) {
if(x == 150) {
x = 50;
y1 = y1-85;
Player();
Box();
if(b == 2){
highscore = highscore + 10;
}
b = 0;
}
if(x == 250) {
x = 150;
Player();
Box();
}
if(x == 350) {
x = 250;
Player();
Box();
}
if(x == 450) {
x = 350;
Player();
Box();
}
if(x == 550){
x = 450;
y1 = y1 + 85;
Player();
Box();
b = 2;
}
}
}
http://com5630051.blogspot.com/search/label/LAB%202
สมัครสมาชิก:
ความคิดเห็น (Atom)