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

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น