วันเสาร์ที่ 19 ตุลาคม พ.ศ. 2556

Game


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

วันอังคารที่ 24 กันยายน พ.ศ. 2556

GCD & LGD Epi.2

int gcd(int x, int y) { if (x==0) { return y; } if (y==0) { return x; } if (x>y) { return gcd(y, x%y); } else { return gcd(x, y%x); } } void setup() { println("GCD "+gcd(20, 4)); }

MY SOLAR



 int i = 0;  //ตัวแปรชนิด Global Variable ที่ใช้แทนได้ทั้งฟังก์ชั่น ตัวนี้นำไปใช้ในการนับ Array และเป็นจำนวนเต็ม
float [] r = {1.750, 6.052, 6.371, 3.390, 69.911, 58.232, 25.362, 24.622};  //Array ชุดที่เก็บข้อมูลสำหรับค่ารัศมีของดาวเคราะห์แต่ละดวง เป็นค่าทศนิยม
float [] d = {57.9102, 108.2002 , 180.6002, 227.9002, 478.5002, 833.5002, 1177.0002, 1462.0002};  //Array ชุดที่ใช้เก็บค่าระยะห่างระหว่างดวงดาว
float [] moon = {0, 0, 1, 2, 39, 30, 21, 8};  //Array ที่ใช้กำหนดจำนวนดวงจันทร์
String [] names = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"};  //Array ชนิด String [] ใช้สำหรับเก็บชื่อของดาวเคราะห์ทั้ง 8 ดวง
color [] c = {#FF0033, #FF00CC, #CC33CC, #6666CC, #33CC99, #00CC33, #000033, #FFFF66};  //Array ที่ใช้สำหรับกำหนดสีของดาวเคราะห์ทั้งหมดตามลำดับ จากซ้ายไปขวา
int y = 150;
int a = 80;
void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนดเรียกใช้งานฟังก์ชั่นต่างๆ
  background(#000000);  //ฟังก์ชั่นที่ใช้เติมสีให้กับพื้นหลัง โดยกำหนดตามแม่สี สีที่ใช้นี้คือ สีน้ำเงินเข้มจนเกือบดำ
  size(1200, 500);  //ฟังก์ชั่นที่ใช้ในการกำหนดพื้นที่ หรือ size(width, height)
  fill(#FF0900);  //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับสิ่งต่างๆ ตามค่าของแม่สี หรือเครื่องหมาย # สีที่ใส่นี้คือ สีแดง
  ellipse (10, 90, 250, 500);  //ฟังก์ชั่นที่ใช้ในการวาดวงรี หรือ ellipse(x, y, width, height) สิ่งที่วาดนี้คือ ดวงอาทิตย์
  while(i < moon.length) {  //กำหนดลูปเงื่อนไขในกรณีที่ค่า i มีค่าน้อยกว่าความยาวของ Array ชื่อ moon
    fill(255);  //เติมสีขาว
    textSize(12);  //ฟังก์ชั่นที่ใช้ในการกำหนดขนาดของข้อความ
    text(names[0], r[0]*65, a);  //ฟังก์ชั่นที่ใช้ในการเขียนข้อความ โดยครั้งนี้กำหนดให้เขียนข้อความตามตำแหน่งของข้อความใน Array ชื่อ names สังเกตได้จาก text(data, x, y)
    text(names[1], r[1]*27, a);
    text(names[2], r[2]*32, a);
    text(names[3], r[3]*71, a);
    text(names[4], r[4]*5, a);
    text(names[5], r[5]*9, a);
    text(names[6], r[6]*27+15, a);
    text(names[7], r[7]*34, a);
    fill(c[i]);  //เติมสีตาม Array ชื่อ c
    ellipse (130+d[i]/2, y, 2.2*r[i], 2.2*r[i]);
    fill(255, 255, 0);  //เติมสีเหลืองให้กับดวงจันทร์
    drawmoon(d[2]+50, r[2]*2, moon[2]);
    drawmoon(d[3]+20, r[3]*2, moon[3]);
    drawmoon(d[4]-110, r[4]*2, moon[4]);
    drawmoon(d[5]-285, r[5]*2, moon[5]);
    drawmoon(d[6]-458, r[6]*2, moon[6]);
    drawmoon(d[7]-600, r[7]*2, moon[7]);
    i = i+1;  //ค่าของ i มีค่าเพิ่มขึ้นทีละ 1 จนกว่าจะสิ้นสุดลูป
  }
 }

void drawmoon(float x, float rad, float n) {  //ฟังก์ชั่นที่ใช้ในการสร้างดวงจันทร์ โดยกำหนดพารามิเตอร์
  int i = 0;  //กำหนดตัวแปร i ชนิด Local Variable ใช้ในการแทนค่าในฟังก์ชั่นนี้
  while(i < n) {  //ลูปกรณีที่ i มีค่าน้อยกว่า n
    ellipse(x+rad*0.7*sin(i), 150+(cos(i)*rad*0.7), 5, 5);
    i = i+2;
  }
}
 

LCM & GCD Epi.1

int lcm(int x, int y) { if (x==0) { return y; } if (y==0) { return x; } if (x>y) { return lcm(x, x%y); } else { return lcm(y, y%x); } } void setup() { println("LCM "+lcm(20, 4)); }

Limited UFO


void setup() {
  size(600, 600);
}
float n = 0;
float x = 0;
float y = 0;
class UFO {
  float a;
  float b;
 
  UFO(float x,float y){
    this.a=x;
    this.b=y;
  }
  void display(float x,float y){
   
   fill(#3399FF);
       ellipse(170+cos(x)*100, 200+sin(y)*150, 90, 130);
    fill(0);
    ellipse(170+cos(x)*100, 200+sin(y)*150, 150, 90);
    fill(255);
  }
}
boolean move  =false;
void mouseClicked() {
  if (move =false) {
    move  =true;
    stop();
      }
}
void draw() {
  background(102, 0, 153);
  UFO f=new UFO (0,0);
  f.display(x, y);
  x = x + 0.01;
  y = y + 0.01;
}

Fraction



 void setup() {
  print(fac(4)); //แสดงผลลัพธ์ factorial 9
}
int fac(int n) { //ฟังก์ชันสำหรับการหาผลลัพธ์ของจำนวน n!
  if (n==1) {
    return 1; //base case โดยการตรวจสอบว่า n=1 หรือไม่ โดยมีการ return ค่า 1
  }
  else {
    return n*fac(n-1); //recursive case โดยมีการ return ค่า n*fac(n-1)
  }
}

PALINDOME


 
void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนดค่า และเรียกใช้สิ่งต่างๆ เป็นฟังก์ชั่นที่ไม่มีการวกกลับ
  int y = 70;
  size(700, 100);  //ฟังก์ชั่นที่ใช้ในการกำหนดขนาดของพื้นที่ canvas
  background(#FFC0CB);  //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับพื้นหลังให้เป็นสีชมพูอ่อน
   String s = "ROTOR";  //ใส่คำที่จะตรวจสอบ
   fill(#000000);  //ฟังก์ชั่นที่ใช้ในการเติมสีให้เป็นสีดำ
   textSize(50);  //ฟังก์ชั่นที่ใช้ในการกำหนดขนาดของตัวอักษร
   if(palindrome(s)) {  //กำหนดเงื่อนไขในการตรวจสอบ
    textSize(50);
    text(s+" is palindrome", width/12, y);  //ถ้าเงื่อนไขด้านบนเป็นจริงให้พิมพ์ข้อความที่ระบุไว้สองอย่าง โดยเลือกตามฟังก์ชั่น โดยข้อความนี้ใช้ text(data, x, y)
   }else {  //กำหนดเงื่อนไขอีกกรณีหนึ่ง
    text(s+" is not palindrome", width/12, y);
   }
 }
  boolean palindrome(String s1) {  //ฟังชั่นที่ใช้ตรวจสอบว่าเป็นจริงหรือเท็จ
   String s2 = s1;  //เก็บคำที่ต้องการตรวจสอบ
   int i = s2.length()-1;  //ใช้นับจำนวนตัวอักษร
   int j = 0;  //ตัวนับ Array
   char[] a = new char[i+1];  //ตัวเก็บค่าตัวอักษร
   while(i>=0) {  //กำหนดลูปสำหรับวนรับค่าตัวอักษรจากท้ายมาหน้า
     a[j] = s2.charAt(i);  //เก็บตัวอักษรของคำตามตำแหน่ง i
     i = i-1;
     j = j+1;
    }
    s2 = new String(a);  //เก็บตัวอักษรทั้งหมดไว้ที่ s2
    boolean n = s1.equals(s2);   //เทียบค่าตัวแปร
    return n;  //คืนค่า n จากเงื่อนไขที่ได้
}

LCD & GCD The End


 
void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนดค่า และเรียกใช้สิ่งต่างๆ เป็นฟังก์ชั่นที่ไม่มีการวกกลับ
  int g1=2000;
  int g2=700;
  int l1=6000;
  int l2=820;
  println("The GCD of "+g1+" and "+g2+" is "+gcd(g1, g2));  //แสดงผลลัพธ์ของการหาผลหารร่วมมากระหว่าง 2,000 กับ 700 ออกทางจอ
  println("The LCM of "+l1+" and "+l2+" is "+lcm(l1, l2));  //แสดงผลลัพธ์ของการหาผลคูณร่วมน้อยระหว่าง 6,000 กับ 820
}
int result;  //กำหนดตัวแปรสำหรับการเก็บค่าของผลลัพธ์ที่ได้จากเงื่อนไข
int gcd(int x, int y) {  //กำหนดฟังก์ชั่นสำหรับการหาผลหารร่วมมากที่มี parameter
  if (x==0) {  //กำหนดเงื่อนไข ในกรณีที่ x มีค่าเท่ากับ 0 ทำตามผลด้านล่าง
    result = y;
  }
  else if (y==0) {  //กำหนดเงื่อนไขอีกกรณี ในกรณีที่ y มีค่าเท่ากับ 0 ทำตามผลด้านล่าง
    result = x;
  }
  else if (x>y) {  //กำหนดเงื่อนไขอีกกรณีที่ x มากกว่า y
    gcd(y, x%y);  //กำหนดเพื่อหาผลหารร่วมมากโดยไม่มีเศษเหลือ
  }
  else if (x<=y) {  //กำหนดเงื่อนไขอีกกรณีที่ x น้อยกว่าหรือเท่ากับ y
    gcd(x, y%x);
  }
  return result;  //คืนค่ากลับออกมาโดยไม่มีเศษเหลือ แต่เป็นจำนวนเต็ม
}
int lcm(int x, int y) {  //กำหนดเพื่อการหาผลคูณร่วมน้อย ที่มี parameter
  return x*y/gcd(x, y);  //คืนค่าที่ได้มาเป็นจำนวนเต็มที่เกิดจากการกระทำของสมการ

BUTTON


 
void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนดค่า และเรียกใช้สิ่งต่างๆ เป็นฟังก์ชั่นที่ไม่มีการวกกลับ
  size(350, 400);  //ฟังก์ชั่นที่ใช้ในการกำหนดขนาดของพื้นที่ หรือ size(width, height)
}
Button a = new Button("Joe", 50, 50);  //ปุ่ม a ที่ตำแหน่งแกน X 50 แกน Y 50 กดแล้วได้คำว่า joe
Button b = new Button("Is", 200, 50);  //ปุ่ม b ที่ตำแหน่งแกน X 200 แกน Y 50 กดแล้วได้คำว่า is
Button c = new Button("My", 50, 165);  //ปุ่ม c ที่ตำแหน่งแกน X 50 แกน Y 165 กดแล้วได้คำว่า my
Button d = new Button("Love", 200, 165);  //ปุ่ม d ที่ตำแหน่งแกน X 200 แกน Y 165 กดแล้วได้คำว่า love
Button e = new Button("Love", 50, 275);  //ปุ่ม e ที่ตำแหน่งแกน X 50 แกน Y 275 กดแล้วได้คำว่า love
Button f = new Button("U", 200, 275);  //ปุ่ม f ที่ตำแหน่งแกน X 200 แกน Y 275 กดแล้วได้คำว่า u
void draw() {  //ฟังก์ชั่นหลักที่ใช้ในการวาด
  background(#F8F8FF);  //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับพื้นหลัง
  a.display();  //เรียกใช้ปุ่ม a
  b.display();  //เรียกใช้ปุ่ม b
  c.display();  //เรียกใช้ปุ่ม c
  d.display();  //เรียกใช้ปุ่ม d
  e.display();  //เรียกใช้ปุ่ม e
  f.display();  //เรียกใช้ปุ่ม f
}
class Button {  //กำหนด class ชื่อ Button
  String name;  //ใช้ในการเก็บชื่อ
  int x;  //กำหนดตัวแปรชนิดจำนวนเต็ม ตัวนี้ใช้เก็บค่าในแกน X
  int y;  //เก็บค่าในแกน Y
  int w;  //เก็บความกว้าง
  int l;  //เก็บความสูง
  int i;  //เก็บตัวนับ Array
  Button(String n, int x, int y) {
    this.name = n;
    this.x = x;
    this.y = y;
    this.w = 100;
    this.l = 50;
    this.i = 0;
  }
  void display() {  //กำหนดฟังก์ชั่นสำหรับแสดงปุ่ม
    fill(#FF9999);  //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับสิ่งต่างๆ สีชมพูอ่อน
    stroke(#FF99FF);  //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับเส้น สีชมพูอมครีม
    strokeWeight(7);  //ฟังก์ชั่นที่ใช้ในการเพิ่มความหนาของเส้น
    rect(this.x, this.y, this.w, this.l);  //ฟังก์ชั่นที่ใช้ในการวาดรูปสี่เหลี่ยม หรือ rect(x, y, width, height)
    this.click();
  }
  void click() {  //กำหนดฟังก์ชั่นที่ใช้เรียกใช้การคลิก
    if (mousePressed&&mouseX>x&&mouseX<x+w&&mouseY>y&&mouseY<y+l) {
      fill(#000000);  //เติมสีดำ
      textSize(50);  //ฟังก์ชั่นที่กำหนดขนาดของข้อความ
      text(name, this.x, this.y+100);  //ฟังก์ชั่นที่ใช้ในการสร้างข้อความ หรือ text(data, x, y)
    }
  }
}

XO


 
int i = 0; //กำหนดตัวแปรชนิด Global Variable เพื่อให้แทนค่าใน Array พร้อมทั้งเป็นคำสั่งในการนับ และการเพิ่ม
int j = 0;
int [][] OX = {{0, 0, 1}, {1, 0, 1}, {0, 1, 0}}; //กำหนด Array 2 มิติ โดยให้ตัวเลขแต่ละตัวออกมาแทนค่าได้ตามเงื่อนไขในการวนลูปที่เรากำหนดขึ้น ในนี้ ผมใช้ 0 แทน O ส่วน 1 แทน X
int x = 50; //กำหนดตัวแปรที่ใช้ในการแทนค่าฟังก์ชั่นต่างๆ ในฟังก์ชั่นทั้งหมด
int y = 50;
void setup() { //ฟังก์ชั่นหลักในการตั้งค่าโดยไม่มีการวนซ้ำ
    background(#FFFF33); //กำหนดพื้นหลังสีเหลือง
    size(300, 300); //กำหนดความกว้างและสูงของพื้นที่ หรือ size(width, height)
    stroke(#000000); //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับเส้น โดยเติมตามค่าของแม่สี หรือเครื่องหมาย # โดยสีที่ใส่ไปนี้คือสีเขียว
    strokeWeight(15); //ฟังก์ชั่นที่ใช้ในการกำหนดน้ำหนักของเส้นโดยใส่ตัวเลขลงไปในวงเล็บ
    line(0,0,300,0); //วาดเส้นขอบ
    line(300,0,0,0); //วาดเส้นขอบ
    noFill(); //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับพื้นหลัง หรือรูปทรงต่างๆ โดยเติมตามค่าของแม่สี หรือเครื่องหมาย # โดยสีที่ใส่ไปนี้คือสีเหลืองอ่อน
    while (i < OX.length) { //ในกรณีที่ j น้อยกว่าความยาวของ OX หรือ 3 จึงจะทำการเข้าวนลูปได้
        while (j < OX[i].length) { //ในกรณีที่ j น้อยกว่าความยาวของ OX หรือ 3 จึงจะทำการเข้าวนลูปได้
             if (OX [i][j] == 0) { //เงื่อนไขที่ว่า OX [i][j] มีค่าเท่ากับ 0 หรือไม่ ถ้าใช่จะสร้างวงกลมตามที่กำหนดด้วยฟังก์ชั่นวาดวงรี หรือ ellipse(x, y, width, height)
                 stroke(#000000); //กำหนดสีในเส้น สีที่ใส่คือสีดำ
                ellipse(x, y, 60, 60);
             }
             else { //ถ้าเงื่อนไขข้างบนไม่เป็นจริง จะวาดเส้นที่กำหนดด้วยฟังก์ชั่น line(x1, y1, x2, y2)
                stroke(#F0181C); //ส่วนนี้วาดรูปกากบาท โดยใส่สีแดง
                line(x+30, y-30, x-30, y+30);
                line(x-30, y-30, x+30, y+30);
                stroke(#000000); //ส่วนนี้วาดเส้นแบ่งพื้นที่ ด้วยสีเขียว
                line(x+50, j, x+50, x+250);
                line(j, y+50, x+250, y+50);
            }
            x = x+100; //กำหนดให้ค่าของ x มีค่าเพิ่มขึ้นทีละ 100 ไปเรื่อยๆ จนกว่าจะจบเงื่อนไขนี้
            j = j+1;  //กำหนดฟังก์ชั่นในการนับ
      }
      j = 0; //ถ้าผ่านเงื่อนไขเหล่านี้มาได้ ค่า j จะเท่ากับ 0
      x = 50; //ถ้าผ่านเงื่อนไขเหล่านี้มาได้ ค่า x จะเท่ากับ 50
      y = y+100; //กำหนดให้ค่าของ y เพื่มขึ้นทีละ 100 จนกว่าจะจบการวนลูป
      i = i+1;  //กำหยดฟังก์ชั่นในการนับอีกครั้ง
   }
}

FACTORAIL




void setup() {
  print(fac(4)); //แสดงผลลัพธ์ factorial 24
}
int fac(int n) { //ฟังก์ชันสำหรับการหาผลลัพธ์ของจำนวน n!
  if (n==1) {
    return 1; //base case โดยการตรวจสอบว่า n=1 หรือไม่ โดยมีการ return ค่า 1
  }
  else {
    return n*fac(n-1); //recursive case โดยมีการ return ค่า n*fac(n-1)
  }
}

SUB CLASS


void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนด และเรียกใช้ ไม่มีการวกกลับ
  Call Friend = new Call();  //กำหนด และเรียกใช้ class
  Call d = new Me();
  Friend.move();  //กำหนดการเคลื่อนไหวของ class
  d.move();
  Friend.run();  //กำหนดการทำงานของ class
}
class Call {  //สร้าง class ชื่อ Call เพื่อการเก็บข้อมูล
  void move() {  //ฟังก์ชั่นสำหรับกำหนดการเคลื่อนไหว
    println("Call Friend");  //พิมพ์ข้อความที่แสดงไว้ในวงเล็บ
  }
  void run() {  //ฟังก์ชั่นสำหรับกำหนดการทำงานของฟังก์ชั่น
    println("I' love you");
    ellipse(50, 50, 25, 25);  //ฟังก์ชั่นสำหรับวาดรูปวงรี หรือ ellipse(x, y, width, height)
  }
}
class Me extends Call {  //สร้าง class สำหรับกำหนดทำงาน และรวมข้อมูล
  void move() {
    println("I wanna to be with you");
  }
}

REVERT STRING



 void setup(){
  size(130, 50);
  background (255, 51, 204);
  fill (102, 51, 51);
  text(reverseString("tavhabarP nawaliw"), 20, 25);
}
String reverseString(String s){
  int i;
  char[] c = new char[s.length()];
  int a = 0;
  for(i = s.length()-1;i >= 0;i--){
     c[a] = s.charAt(i);
     a = a+1;
  }
  s = new String(c);
  return s;
}

KO



int x = 50;  //กำหนดตัวแปรชนิด Global Variable สองตัวเพื่อให้แทนค่าได้ทุกฟังก์ชั่นในโปรแกรม
int y = 50;
float [][] Reversi = {
  {
    random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2)
    }
  , {
    random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2)
    }
  , {
    random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2)
    }
  , {
    random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2)
    }
  , {
    random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2)
    }
  , {
    random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2)
    }
  , {
    random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2)
    }
  , {
    random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2), random(0, 2)
    }
  };  //กำหนด Array 2 มิติ โดยให้ตัวเลขแต่ละตัวออกมาแทนค่าได้ตามเงื่อนไขในการวนลูปที่เรากำหนดขึ้น ในนี้ ตัวเลขแต่ละตัวในวงเล็บนี้ถูกกำหนดให้นำออกมาใช้แบบสุ่มตามหลักทศนิยม หรือฟังก์ชั่น float พร้อมกับฟังก์ชั่นในการสุ่มเลือก หรือ random() เราจะสังเกตได้ว่า สีของวงกลมที่ใช้แทนเบี้ยนั้นมีการเปลี่ยนไปเรื่อยทุกการใช้งานทีละครั้ง ยิ่งเรากำหนดตัวเลขมากขึ้น การเปลี่ยนสีก็ยิ่งนานขึ้น
  int i = 0;  //กำหนดเพื่อการนับ

int j = 0;
void setup() {  //ฟังก์ชั่นหลักในการตั้งค่าโดยไม่มีการวนซ้ำ
  size(400, 400);  //กำหนดความกว้างและสูงของพื้นที่ เป็น 400x400
  background(#008000);  //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับพื้นหลังโดยสีที่ใส่ไปนี้คือ สีเขียว
  while (x < 400) {  //ในกรณีที่ x น้อยกว่า 400 จึงจะทำการเข้าวนลูปได้
    strokeWeight(3);  //ฟังก์ชั่นที่ใช้ในการกำหนดน้ำหนักของเส้นโดยใส่ตัวเลขลงไปในวงเล็บ
    line(x, 0, x, 400);  //ถ้าเงื่อนไขข้างบนไม่เป็นจริง จะวาดเส้นที่กำหนดด้วยฟังก์ชั่น line
    x = x+51;  //ค่า x จะมีค่าเพิ่มขึ้นทีละ 50 ในเงื่อนไขนี้ หากเป็นจริง
  }
  while (y < 400) {  //ในกรณีที่ y น้อยกว่า 400 จึงจะทำการเข้าวนลูปได้
    line(0, y, 400, y);  //ถ้าเงื่อนไขข้างบนไม่เป็นจริง จะวาดเส้นที่กำหนดด้วยฟังก์ชั่น line
    y = y+51;  //ค่า y จะมีค่าเพิ่มขึ้นทีละ 50 ในเงื่อนไขนี้ หากเป็นจริง
  }
  x = 25;  //กำหนดให้ค่าของตัวแปรทั้งสองนี้ใหม่ และยังคงเป็นจำนวนเต็ม เพื่อนำมาใช้กับลูปถัดไป
  y = 25;
  while (i < Reversi.length) {  //ในกรณีที่ i น้อยกว่าความยาวของ Reversi หรือ 8 จึงจะทำการเข้าวนลูปได้
    while (j < Reversi[i].length) {  //ในกรณีที่ j น้อยกว่าความยาวของ Reversi หรือ 8 จึงจะทำการเข้าวนลูปได้
      if (Reversi[i][j] <= 1) {  //เงื่อนไขที่ว่า Reversi [i][j] มีค่าเท่ากับ 1 หรือไม่ ถ้าใช่จะสร้างวงกลมตามที่กำหนดด้วยฟังก์ชั่นวาดวงรี พร้อมกำหนดใส่สีดำ หรือสีขาว
        fill(#000000);  //สีดำ
      }
      else {  //ฟังก์ชั่นที่ใช้กำหนดอีกเงื่อนไขหนึ่ง
        fill(#FFFFFF);  //สีขาว
      }
      strokeWeight(2);  //ฟังก์ชั่นที่ใช้ในการกำหนดน้ำหนักของเส้นโดยใส่ตัวเลขลงไปในวงเล็บ
      ellipse(x, y, 35, 35);  //วาดวงกลมสองชั้นเพื่อทำเป็นเบี้ยในกระดานเล่นเกม
      x = x+50;  //ค่า x จะมีค่าเพิ่มขึ้นทีละ 50 ในเงื่อนไขนี้ หากเป็นจริง
      j = j+1;  //ค่า j จะมีค่าเพิ่มขึ้นทีละ 1 ในเงื่อนไขนี้ หากเป็นจริง
    }
    j = 0;    //กำหนดให้ค่าของตัวแปรทั้งหมดนี้ใหม่ หลังจากที่ผ่านลูปชั้นก่อนนี้มา หากเป็นจริงจะสิ้นสุดการวนลูป หากไม่เป็นจริง จะยังคงทำการวนลูปซ้ำต่อไป
    x = 25;
    y = y+50;  //ค่า y จะมีค่าเพิ่มขึ้นทีละ 50 ในเงื่อนไขนี้ หากเป็นจริง
    i = i+1;  //ค่า i จะมีค่าเพิ่มขึ้นทีละ 1 ในเงื่อนไขนี้ หากเป็นจริง
  }
}