16
โโโโโโโโโโโโโโโโโโโโ 259201 Computer Programming for Engineers (Week 13)

โปรแกรมประยุกต์อื่นๆ

  • Upload
    kay

  • View
    32

  • Download
    1

Embed Size (px)

DESCRIPTION

โปรแกรมประยุกต์อื่นๆ. 259201 Computer Programming for Engineers (Week 13). Outline. ตัวอย่างเกม OX ส่วนวาดภาพ ส่วนรับอินพุต ส่วนตรวจสอบการแพ้ชนะ ส่วนสลับกันเล่น. ตัวอย่างเกม OX. เริ่มต้น - ตารางเปล่า สลับกันเล่น ระบุตำแหน่ง ตรวจสอบการแพ้ชนะ วาดตารางใหม่ จนกว่าจะจบเกม. O. X. - PowerPoint PPT Presentation

Citation preview

Page 1: โปรแกรมประยุกต์อื่นๆ

โปรแกรมประยุกต์�อื่ �นๆ

259201 Computer Programming for Engineers (Week 13)

Page 2: โปรแกรมประยุกต์อื่นๆ

Outline

• ต์�วอื่ยุ�างเกม OX• ส่�วนวาดภาพ• ส่�วนร�บอื่�นพต์• ส่�วนต์รวจส่อื่บการแพ�ชนะ• ส่�วนส่ลั�บก�นเลั�น

Page 3: โปรแกรมประยุกต์อื่นๆ

ต์�วอื่ยุ�างเกม OX

O

O

X

X

• เร��มต์�น - ต์ารางเปลั�า• ส่ลั�บก�นเลั�น• ระบต์"าแหน�ง• ต์รวจส่อื่บการแพ�ชนะ• วาดต์ารางใหม�• จนกว�าจะจบเกม

Page 4: โปรแกรมประยุกต์อื่นๆ

วาดต์าราง

• Input/Output?–ต์�วแปรแบบ 2 ม�ต์�เก%บต์าราง OX ประกาศใน

main–Output อื่อื่กมาเป'นค่�า?

• วาดต์ารางอื่ยุ�างไร?• ต์�วแปรม*ก*�ส่ถานะ?

1 ช�อื่งจากต์�วแปร

1 ช�อื่งจาก “|”

1 ช�อื่งจาก “_”

1 ช�อื่งจาก “+”

ช�อื่งว�าง

Page 5: โปรแกรมประยุกต์อื่นๆ

ส่�วนวาดภาพ• Q1: จงเขี*ยุนโปรแกรมที่*�ม*รายุลัะเอื่*ยุดด�งต์�อื่ไปน*.– ประกาศต์�วแปรอื่าเรยุ�ขีนาดส่อื่งม�ต์�ขีนาด 3x3– ก"าหนดให�ค่�าเร��มต์�นขีอื่งต์�วแปรด�งกลั�าวค่ อื่ 0– ส่�มค่�าใดๆ ในต์�วแปรด�งกลั�าวให�อื่ยุ/�ในช�วง 0 - 2– ให�เขี*ยุนฟั1งก�ช�นที่*�วาดต์ารางโดยุน"าค่�าต์�วแปรอื่าเรยุ�มา

ใช� • หากค่�าในอื่าเรยุ�เป'น 1 วาด O • หากค่�าในอื่าเรยุ�เป'น 2 วาด X• หากค่�าในอื่าเรยุ�เป'น 0 วาดช�อื่งว�าง

– เร*ยุกใช�ฟั1งก�ช�นด�งกลั�าว

Page 6: โปรแกรมประยุกต์อื่นๆ

q1.c#include<stdio.h>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(" ");printf(" ");if (j!=2)

printf("|"); } printf("\n"); if (i!=2)

printf("---+---+---\n");}

}

Page 7: โปรแกรมประยุกต์อื่นๆ

ส่�วนร�บอื่�นพต์

• การร�บอื่�นพต์จะร�บผ่�าน Coordinate ด�งต์�อื่ไปน*.

• ร�บที่*ลัะค่�าเร��มจากต์"าแหน�งแถวก�อื่น ต์ามด�วยุหลั�ก

2,0 2,1

1,0 1,1

0,0 0,1

2,2

1,2

0,2

Page 8: โปรแกรมประยุกต์อื่นๆ

ส่�วนร�บอื่�นพต์ (Cont.)

• Q2: จงแก�ไขีโปรแกรมจาก Q1 โดยุให�เพ��มเต์�มการร�บอื่�นพต์ส่"าหร�บผ่/�เลั�น O หน3�งค่ร�.ง ต์�อื่ที่�ายุ Code เด�ม ด�งต์�งอื่ยุ�างต์�อื่ไปน*.–Enter O horizontal axis: 1–Enter O vertical axis: 0

• ถ�าต์"าแหน�งด�งกลั�าวม* O หร อื่ X ไว�แลั�ว ให�วนซ้ำ".าจนกว�าผ่/�ใช�จะกรอื่กค่�าถ/ก

O

O

X

XO

Page 9: โปรแกรมประยุกต์อื่นๆ

q2.c#include<stdio.h>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(" ");printf(" ");if (j!=2)

printf("|"); } printf("\n"); if (i!=2)

printf("---+---+---\n");}

}

Page 10: โปรแกรมประยุกต์อื่นๆ

ส่�วนต์รวจส่อื่บการแพ�ชนะ

• ต์�วอื่ยุ�างการแพ�ชนะO

O

X

X

O

O

X X

O

X

Page 11: โปรแกรมประยุกต์อื่นๆ

ส่�วนต์รวจส่อื่บการแพ�ชนะ (Cont.)

• แนวนอื่น• แนวต์�.ง• แนวที่ะแยุงมม

Page 12: โปรแกรมประยุกต์อื่นๆ

ส่�วนต์รวจส่อื่บการแพ�ชนะ (Cont.)

• Q3: จงเขี*ยุนโปรแกรมที่*�ม*รายุลัะเอื่*ยุดด�งต์�อื่ไปน*.–ประกาศต์�วแปรอื่าเรยุ�ขีนาดส่อื่งม�ต์�ขีนาด 3x3–ก"าหนดให�ค่�าเร��มต์�นขีอื่งต์�วแปรด�งกลั�าวค่ อื่ 0– ให�เขี*ยุนฟั1งก�ช�นต์รวจส่อื่บการแพ�ชนะในแนวนอื่นที่*�

แถวที่*� 0• ส่�งค่�า 0 กลั�บหากไม�ม*การแพ�ชนะ• ส่�งค่�า 1 กลั�บหาก o ชนะ• ส่�งค่�า 2 กลั�บหาก x ชนะ

– ให�ส่มมต์�ค่�าเพ �อื่ที่ดส่อื่บฟั1งก�ช�นด�งกลั�าวในโค่5ด

Page 13: โปรแกรมประยุกต์อื่นๆ

q3.c // ส่�วนไหนยุ�งไม�ใช� ส่ามารถ comment ไว�ก�อื่นได�#include<stdio.h>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;

elsereturn 0;

}

Page 14: โปรแกรมประยุกต์อื่นๆ

ส่�วนส่ลั�บก�นเลั�น

• ส่ร�างต์�วแปรส่"าหร�บเก%บผ่/�เลั�นป1จจบ�น–0 ส่"าหร�บผ่/�เลั�น o–1 ส่"าหร�บผ่/�เลั�น x

• ส่ลั�บก�นโดยุใช�การประมวลัผ่ลัน�พจน�ที่างต์รรกศาส่ต์ร�– !0 -> 1– !1 -> 0

Page 15: โปรแกรมประยุกต์อื่นๆ

ส่�วนส่ลั�บก�นเลั�น (Cont.)

• Q4:จงแก�ไขีโปรแกรมจาก Q2 แลัะ Q3 เพ �อื่ให�ผ่/�ใช�ส่ามารถเลั�นเกม OX ได�โดยุม*ลั�กษณะต์�อื่ไปน*.– เร��มต์�นด�วยุต์ารางว�าง–ส่ลั�บก�นเลั�นได� โดยุเร��มจาก o ก�อื่น–ส่ามารถป8อื่นต์"าแหน�งการใส่� o หร อื่ x ได� โดยุห�ามใส่�

ที่�บต์"าแหน�งที่*�ม*ค่�า o หร อื่ x หากใส่�ที่�บให�ใส่�ใหม�เร �อื่ยุๆ–ส่ามารถต์รวจส่อื่บการแพ�ชนะในแนวนอื่น แถวที่*� 0

ได�

Page 16: โปรแกรมประยุกต์อื่นๆ

q4.c#include<stdio.h>

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");

}