งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

โปรแกรมประยุกต์อื่นๆ 259201 Computer Programming for Engineers (Week 13)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "โปรแกรมประยุกต์อื่นๆ 259201 Computer Programming for Engineers (Week 13)"— ใบสำเนางานนำเสนอ:

1 โปรแกรมประยุกต์อื่นๆ Computer Programming for Engineers (Week 13)

2 Outline ตัวอย่างเกม OX ส่วนวาดภาพ ส่วนรับอินพุต ส่วนตรวจสอบการแพ้ชนะ ส่วนสลับกันเล่น

3 ตัวอย่างเกม OX O O X X เริ่มต้น - ตารางเปล่า สลับกันเล่น ระบุตำแหน่ง ตรวจสอบการแพ้ชนะ วาดตารางใหม่ จนกว่าจะจบเกม

4 วาดตาราง Input/Output? – ตัวแปรแบบ 2 มิติเก็บตาราง OX ประกาศใน main –Output ออกมาเป็นค่า ? วาดตารางอย่างไร ? ตัวแปรมีกี่สถานะ ? 1 ช่องจากตัว แปร 1 ช่องจาก “|” 1 ช่องจาก “_” 1 ช่องจาก “+” ช่องว่าง

5 ส่วนวาดภาพ Q1: จงเขียนโปรแกรมที่มีรายละเอียด ดังต่อไปนี้ – ประกาศตัวแปรอาเรย์ขนาดสองมิติขนาด 3x3 – กำหนดให้ค่าเริ่มต้นของตัวแปรดังกล่าวคือ 0 – สุ่มค่าใดๆ ในตัวแปรดังกล่าวให้อยู่ในช่วง – ให้เขียนฟังก์ชันที่วาดตารางโดยนำค่าตัวแปร อาเรย์มาใช้ หากค่าในอาเรย์เป็น 1 วาด O หากค่าในอาเรย์เป็น 2 วาด X หากค่าในอาเรย์เป็น 0 วาดช่องว่าง – เรียกใช้ฟังก์ชันดังกล่าว

6 q1.c #include void print_tbl(int [3][3]); void main(void) { int table[3][3]={0,0,0,0,0,0,0,0,0}; int i, j; for (i=0; i<3; i++) for(j=0; j<3; j++) table[i][j] = rand()%3; print_tbl(table); } void print_tbl(int tbl[3][3]) { int i, j; for (i=0; i<3; i++) { for (j=0; j<3; j++) { printf(" "); if (tbl[i][j]==1) printf("o"); else if (tbl[i][j]==2) printf("x"); else printf(" "); if (j!=2) printf("|"); } printf("\n"); if (i!=2) printf(" \n"); }

7 ส่วนรับอินพุต การรับอินพุตจะรับผ่าน Coordinate ดังต่อไปนี้ รับทีละค่าเริ่มจากตำแหน่งแถวก่อน ตาม ด้วยหลัก 2,02,1 1,01,1 0,00,1 2,2 1,2 0,2

8 ส่วนรับอินพุต (Cont.) Q2: จงแก้ไขโปรแกรมจาก Q1 โดยให้ เพิ่มเติมการรับอินพุตสำหรับผู้เล่น O หนึ่ง ครั้ง ต่อท้าย Code เดิม ดังตังอย่าง ต่อไปนี้ –Enter O horizontal axis: 1 –Enter O vertical axis: 0 ถ้าตำแหน่งดังกล่าวมี O หรือ X ไว้แล้ว ให้ วนซ้ำจนกว่าผู้ใช้จะกรอกค่าถูก O O X X O

9 q2.c #include void print_tbl(int [3][3]); void main(void) { int table[3][3]={0,0,0,0,0,0,0,0,0}; int i, j; int h, v; for (i=0; i<3; i++) for(j=0; j<3; j++) table[i][j] = rand()%3; print_tbl(table); do { printf("Enter o horizontal axis: "); scanf("%d", &h); printf("Enter o vertical axis: "); scanf("%d", &v); }while(table[h][v]==1||table[h][v]==2); table[h][v]=1; print_tbl(table); } void print_tbl(int tbl[3][3]) { int i, j; for (i=0; i<3; i++) { for (j=0; j<3; j++) { printf(" "); if (tbl[i][j]==1) printf("o"); else if (tbl[i][j]==2) printf("x"); else printf(" "); if (j!=2) printf("|"); } printf("\n"); if (i!=2) printf(" \n"); }

10 ส่วนตรวจสอบการแพ้ชนะ ตัวอย่างการแพ้ชนะ O O X X O O XX O X

11 ส่วนตรวจสอบการแพ้ชนะ (Cont.) แนวนอน แนวตั้ง แนวทะแยงมุม

12 ส่วนตรวจสอบการแพ้ชนะ (Cont.) Q3: จงเขียนโปรแกรมที่มีรายละเอียด ดังต่อไปนี้ – ประกาศตัวแปรอาเรย์ขนาดสองมิติขนาด 3x3 – กำหนดให้ค่าเริ่มต้นของตัวแปรดังกล่าวคือ 0 – ให้เขียนฟังก์ชันตรวจสอบการแพ้ชนะใน แนวนอนที่แถวที่ 0 ส่งค่า 0 กลับหากไม่มีการแพ้ชนะ ส่งค่า 1 กลับหาก o ชนะ ส่งค่า 2 กลับหาก x ชนะ – ให้สมมุติค่าเพื่อทดสอบฟังก์ชันดังกล่าวใน โค๊ด

13 q3.c // ส่วนไหนยังไม่ใช้ สามารถ comment ไว้ก่อนได้ #include void print_tbl(int [3][3]); int check_winning(int [3][3]); void main(void) { int table[3][3]={0,0,0,0,0,0,0,0,0}; int winner = 0; table[0][0]=1; table[0][1]=1; table[0][2]=1; print_tbl(table); while (winner==0) { winner = check_winning(table); } if (winner==1) printf("O win\n"); else if (winner==2) printf("X win\n"); } int check_winning(int tbl[3][3]) { if (tbl[0][0]==1 &&tbl[0][1]==1 &&tbl[0][2]==1) return 1; else if (tbl[0][0]==2 &&tbl[0][1]==2 &&tbl[0][2]==2) return 2; else return 0; }

14 ส่วนสลับกันเล่น สร้างตัวแปรสำหรับเก็บผู้เล่นปัจจุบัน –0 สำหรับผู้เล่น o –1 สำหรับผู้เล่น x สลับกันโดยใช้การประมวลผลนิพจน์ทาง ตรรกศาสตร์ –!0 -> 1 –!1 -> 0

15 ส่วนสลับกันเล่น (Cont.) Q4: จงแก้ไขโปรแกรมจาก Q2 และ Q3 เพื่อให้ผู้ใช้สามารถเล่นเกม OX ได้โดยมี ลักษณะต่อไปนี้ – เริ่มต้นด้วยตารางว่าง – สลับกันเล่นได้ โดยเริ่มจาก o ก่อน – สามารถป้อนตำแหน่งการใส่ o หรือ x ได้ โดยห้ามใส่ทับตำแหน่งที่มีค่า o หรือ x หาก ใส่ทับให้ใส่ใหม่เรื่อยๆ – สามารถตรวจสอบการแพ้ชนะในแนวนอน แถวที่ 0 ได้

16 q4.c #include void print_tbl(int [3][3]); int check_winning(int [3][3]); void main(void) { int table[3][3]={0,0,0,0,0,0,0,0,0}; int h, v, winner = 0, player=0; print_tbl(table); while (winner==0) { if (player==0) { do { printf("Enter o horizontal axis: "); scanf("%d", &h); printf("Enter o vertical axis: "); scanf("%d", &v); } while(table[h][v]==1||table[h][v]==2); table[h][v]=1; } else { do { printf("Enter x horizontal axis: "); scanf("%d", &h); printf("Enter x vertical axis: "); scanf("%d", &v); } while ( (table[h][v]==1||table[h][v]==2); table[h][v]=2; } winner = check_winning(table); player=!player; printf("\n"); print_tbl(table); } if (winner==1) printf("O win!\n"); else if (winner==2) printf("X win!\n"); }


ดาวน์โหลด ppt โปรแกรมประยุกต์อื่นๆ 259201 Computer Programming for Engineers (Week 13)

งานนำเสนอที่คล้ายกัน


Ads by Google