หน้าแรก
 การบ้าน
  C/C++ new
  Java new
  Windows Phone
  แจ้งเรื่องที่ต้องการ
 บทความ
  .NET
  Android
  Blackberry
  C++Builder
  Delphi
  Java
  Mobile
  Open Source
  Pocket PC
  Visual Basic
  Web
  Windows Phone
  Others
 แบบเรียนฟรี
  ASP
  ASP.NET Webmatrix
  C++
  eVB
  J2ME
  Java
  PHP
 ซอร์สโค้ด
  Android
  ASP
  C++
  VC++
  CGI-Perl
  Delphi
  Java
  jQuery
  PHP
  Visual Basic
  .NET
 บริการจากเรา
  เปิดท้าย... ขายโค้ด
  Freeware
  อัตราค่าโฆษณา
  รายชื่อลูกค้า
  สถิติผู้เข้าเว็บ
 ดาว์นโหลด
 ค้นหาข้อมูล
 กระดานสนทนา
  .NET
  C/C++
  Delphi
  Java
  Palm/PocketPC
  Visual Basic
  Web
  อื่นๆ
 กระดานงาน
 ลิงค์เว็บ
 เกี่ยวกับผม
 อัตราค่าโฆษณา
Social Network

Facebook  Twitter  YouTube
 New Article
 Webboard
 Freelanceboard
Freeware
โปรแกรมเบอร์ดี (BerDee)
โปรแกรมเบอร์ดี (Android)
เกมส์เป่ายิ้งฉุบ
เกมส์เป่ายิ้งฉุบ(Android)
WebcamMonitor
WebcamMonitor(Windows)
scSendMail
scSendMail(Windows)
MSN Caption
MSN Caption(Windows)
  Freelance comment
  ติดต่อสอบถามมาได้ตลอดนะ...
2015-07-29 13:35:58
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:33:54
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:32:51
  ติดต่อสอบถามเข้ามาได้นะ...
2014-01-06 12:47:38
  ถ้ายังหาคนสอนไม่ได้ ก็ลอ...
2013-07-06 01:04:37
  สนใจส่งขอบเขตมาคุยราคาก...
2013-03-24 18:54:20
  ถ้ายังไม่มีคนรับงานติดต...
2012-12-16 19:18:14
  สนใจคะ ติดต่อ 0905076277...
2012-11-12 11:07:46
  รับทำโปรเจ็คนักศึกษาหรื...
2012-10-29 03:10:46
  sukit_te34@hotmail.com...
2012-10-29 03:09:36
  Webboard comment
  เขียนโปรแกรมภาษาจาวา
1.โ...

2023-09-12 11:40:28
  ต้องลอง debug ดูเองครับ
ไล่...

2023-06-08 18:03:06
  ร้านค้าแห่งหนึ่ง จะต้องน...
2021-09-21 08:47:08
  จงเขียนโปรแกรมดำเนินการ...
2021-05-07 15:06:11
  จงเขียนโปรแกรมสำหรับคำน...
2021-03-09 14:21:45
  ขอดู...
2021-01-04 23:56:45
  ขอโค้ดเพื่อทำการเรียนกา...
2020-12-09 23:02:09
  แล้ว ?...
2020-12-09 10:56:34
  จ้า...
2020-10-18 16:53:21
  พอดีผมเหลื่อแค่ตัดสต๊อก...
2020-05-31 21:49:43
  Homework comment
  เขียนโปรแกรมเพื่อรับค่า...
2022-02-24 10:45:17
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  โจทย์การบ้าน c++ เขียนรูปแ...
2020-04-06 11:01:33
  แบบนี้ขอเป็น ภาษา php หน่อย...
2019-09-18 14:36:34
  ผมไม่อยากให้คุณได้คะแนน...
2019-04-27 01:29:07
  อาจารย์เขาบอกแนวข้อสอบม...
2019-04-27 00:44:29
  ขอสอบถามการเขียน c++ ครับ เ...
2018-04-02 12:19:21
  โค้ดตัวอย่างศึกษาให้เข้...
2017-11-26 14:50:05
  คำนวณค่าน้ำโดยรับค่ามิเ...
2017-11-20 23:15:26
  Article comment
  เท่าที่อ่าน error คือพื้นที่...
2022-03-23 13:56:48
  เรียน สอบถามปัญหา กับ อ.คร...
2022-01-24 17:39:49
  ต้องการ ให้เขียน โปรแกรม ...
2019-12-09 11:39:58
  รับเขียน arx จาก vc++ 2017 ล็อคโปร...
2019-09-19 09:48:09
  ทำการ register ไฟล์ที่ชื่อ mswinsck.oc...
2019-09-17 14:05:56
  ใน vb 6 ไม่มี component winsock เลยค่ะ ส...
2019-09-03 10:31:02
  รบกวนขอสอบถามหน่อยนะครั...
2019-03-04 05:31:04
  สามารถนำตัวหนังสือจากภา...
2018-12-25 08:54:32
  มีcode ของ VB ไหมค่ะ ถ้ามีรบกว...
2017-09-28 16:50:02
  น่าจะได้ครับ ไม่เคยลอง
...

2017-07-11 09:59:35
  9Mcode comment

Link Exchange

อัตราค่าโฆษณา
 
 Webboard

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

กระทู้ #3494 [C] (จาก IP: 27.55.35.58)

ช่วยอธิบายโค๊ตเกมส์minesweeper(c++)ให้ทีค่ะ ไม่เข้าใจเลยค่ะ

ใครก็ได้ที่รู้เกี่ยวกับการเขียนโปรแกรม ได้โปรดช่วยอธิบายโค๊ตข้างล่างทีนะค่ะ ขอกราบขอบพระคุณไว้ล่วงหน้านะค่ะ
#include <iostream>
#include<cstdlib>
#include<ctime>

const int DIMX = 6;
const int DIMY = 6;
const int MINES = 6;
const int MINE = -1;
const char COVERED = 'X';
const char UNCOVERED = ' ';
const char FLAG = 'F';
int state[DIMX][DIMY];
char display[DIMX][DIMY];

void init(); // initialize game states
int countSorroundingMines(int x, int y); // helper function used by init
void reveal(int x, int y);
void player(); // handle player input
void setFlag();
void uncover();
void print(); // print the minefield
void cheat(); // print out the mines
bool isWin();
bool isLose();
bool playNewGame();

int main() {
std::cout << "Welcome to MineSweeper!" << std::endl;
init();
bool playing = true;
while(playing) {
print();
player();
if(isWin()) {
std::cout << "You Win!" << std::endl;
playing = false;
} else if(isLose()) {
std::cout << "You Lose!" << std::endl;
playing = false;
}

if(!playing) {
playing = playNewGame();
if(playing) {
init();
}
}
}
std::cout << "Exiting Minesweeper!" << std::endl;
return 0;
}

void init() {
std::cout << "New Game!" << std::endl;
// set display to "uncovered"
for(int y = 0; y < DIMY; y++) {
for(int x = 0; x < DIMX; x++) {
display[x][y] = COVERED;
}
}
// initialize mines
srand(time(0));
for(int i = 0; i < MINES; i++) {
bool placed = false;
while(!placed) {
int x = rand() % DIMX;
int y = rand() % DIMY;
if(state[x][y] != MINE) { // check mine not set
placed = true;
state[x][y] = MINE;
}
}
}
// place hint numbers
for(int y = 0; y < DIMY; y++) {
for(int x = 0; x < DIMX; x++) {
state[x][y] = countSorroundingMines(x, y);
}
}
}

bool playNewGame() {
bool selected = false;
while(!selected) {
char choice;
std::cout << "Play another game? Y or N" << std::endl;
std::cin >> choice;
if(choice == 'N' || choice == 'n') {
return false;
selected = true;
} else if(choice == 'Y' || choice == 'y') {
return true;
selected = true;
} else {
std::cout << "That is not a valid choice!" << std::endl;
}
}
}

void reveal(int x, int y) {
if(x >= 0 && x < DIMX && y >= 0 && y < DIMY) { // check that x and y are valid
if(display[x][y] == UNCOVERED) {
return;
}
display[x][y] = UNCOVERED;

if(state[x][y] == MINE || state[x][y] != 0) {
return;
}
reveal(x - 1, y - 1);
reveal(x, y - 1);
reveal(x + 1, y - 1);
reveal(x - 1, y);
reveal(x + 1, y);
reveal(x - 1, y + 1);
reveal(x, y + 1);
reveal(x + 1, y + 1);
} else {
return;
}
}

/*
[x-1, y-1][x, y-1][x+1, y-1]
[x-1, y ][x, y ][x+1, y ]
[x-1, y+1][x, y+1][x+1, y+1]
*/
int countSorroundingMines(int x, int y) {
if(state[x][y] == MINE) {
return MINE;
}
int num = 0;
if(x > 0 && y > 0) { // top left
if(state[x - 1][y - 1] == MINE) {
num++;
}
}
if(y > 0) { // top
if(state[x][y - 1] == MINE) {
num++;
}
}
if(x < DIMX - 1 && y > 0) { // top right
if(state[x + 1][y - 1] == MINE) {
num++;
}
}
if(x > 0) { // left
if(state[x - 1][y] == MINE) {
num++;
}
}
if(x < DIMX - 1) { // right
if(state[x + 1][y] == MINE) {
num++;
}
}
if(x > 0 && y < DIMY - 1) { // bottom left
if(state[x - 1][y + 1] == MINE) {
num++;
}
}
if(y < DIMY - 1) { // bottom
if(state[x][y + 1] == MINE) {
num++;
}
}
if(x < DIMX - 1 && y < DIMY - 1) { // bottom right
if(state[x + 1][y + 1] == MINE) {
num++;
}
}
return num;
}

bool isWin() {
bool win = true;
for(int y = 0; y < DIMY; y++) {
for(int x = 0; x < DIMX; x++) {
win &= ((display[x][y] == UNCOVERED && state[x][y] != MINE) ||
((display[x][y] == COVERED || display[x][y] == FLAG) && state[x][y] == MINE));
}
}
return win;
}

bool isLose() {
for(int y = 0; y < DIMY; y++) {
for(int x = 0; x < DIMX; x++) {
if (display[x][y] == UNCOVERED && state[x][y] == MINE) {
return true;
}
}
}
return false;
}

void player() {
std::cout << "Commands: R => reveal square, F => set flag, C => cheat, N => New Game" << std::endl;
bool selected = false;
while(!selected) {
char choice;
std::cin >> choice;
if(choice == 'R' || choice == 'r') {
uncover();
selected = true;
} else if(choice == 'F' || choice == 'f') {
setFlag();
selected = true;
} else if(choice == 'C' || choice == 'c') {
cheat();
} else if(choice == 'N' || choice == 'n') {
init();
selected = true;
} else {
std::cout << "Invalid Choice!" << std::endl;
}
}

}

void uncover() {
bool selected = false;
while(!selected) {
int x;
int y;
std::cout << "Input X (1 - " << (DIMX) << ")" << std::endl;
std::cin >> x;
std::cout << "Input Y (1 - " << (DIMY) << ")" << std::endl;
std::cin >> y;
x--;
y--;
if(x >= 0 && x < DIMX && y >= 0 && y < DIMY) {
reveal(x, y); // call recursive reveal algorithm
selected = true;
} else {
std::cout << "(X,Y) Values out of range!" << std::endl;
}
}
}

void setFlag() {
bool selected = false;
while(!selected) {
int x;
int y;
std::cout << "Input X (1 - " << (DIMX) << ")" << std::endl;
std::cin >> x;
std::cout << "Input Y (1 - " << (DIMY) << ")" << std::endl;
std::cin >> y;
x--;
y--;
if(x >= 0 && x < DIMX && y >= 0 && y < DIMY) {
display[x][y] = FLAG;
selected = true;
} else {
std::cout << "(X,Y) Values out of range!" << std::endl;
}
}
}

void cheat() {
std::cout << "Cheating is bad!" << std::endl;
std::cout << " ";
for(int x = 0; x < DIMX; x++) {
std::cout << (x + 1) << " ";
}
std::cout << std::endl << "";
for(int x = 0; x < DIMX; x++) {
std::cout << "";
}
std::cout << std::endl;
for(int y = 0; y < DIMY; y++) {
std::cout << (y + 1) << " ";
for(int x = 0; x < DIMX; x++) {
if(state[x][y] == MINE) {
std::cout << "@ ";
} else {
if(state[x][y] == 0) {
std:: cout << " ";
} else {
std:: cout << state[x][y] << " ";
}
}
}
std::cout << std::endl;
}
}

void print() {
std::cout << " ";
for(int x = 0; x < DIMX; x++) {
std::cout << (x + 1) << " ";
}
std::cout << std::endl << "";
for(int x = 0; x < DIMX; x++) {
std::cout << "";
}
std::cout << std::endl;
for(int y = 0; y < DIMY; y++) {
std::cout << (y + 1) << " ";
for(int x = 0; x < DIMX; x++) {
if(display[x][y] == COVERED || display[x][y] == 'F') { // is it tile still uncovered
std::cout << display[x][y] << " ";
} else { // display the state
if(state[x][y] == MINE) {
std::cout << "@ ";
} else {
if(state[x][y] == 0) {
std:: cout << " ";
} else {
std:: cout << state[x][y] << " ";
}
}
}
}

std::cout << std::endl;
}
}
จากคุณ : pin / j_rungrat@hotmail.com [2014-02-01 15:41:56]  

27.55.35.58 ความคิดเห็น #29001 (จาก IP: 27.55.35.58)
มันดูเยอะไปหน่อยก็ต้องขอโทษด้วยนะคะ พี่ๆก็ช่วยกันนะคะ คิดว่าทำเพื่อเด็กน้อยคนหนึ่งนะ พอดีว่าอาจารย์ให้เขียนโปรแกรมและให้อธิบายด้วย ก็เลยมาขอให้ท่านที่มีความเมตตาโปรดช่วยหนูด้วยนะคะ
จากคุณ : pin [2014-02-01 16:10:16]

125.24.162.120 ความคิดเห็น #29002 (จาก IP: 125.24.162.120)
อ.ให้เขียนแล้วอธิบาย นั้นคือการที่ทำเองแล้วอธิบายสิ่งที่คิดเองมันจะง่ายกว่า

แต่เด็กน้อยคนหนึ่ง ไม่อยากเขียน เขียนไม่เป็น ไม่มีเวลา บลาๆๆ ไปหาโค้ดที่ไม่เข้าใจ มาให้คนอื่่นอธิบายแล้วไปอธิบายให้ อ. ฟัง

ที่จะแนะนำคือ 1ให้ไปเขียนเอง 2ไปหาโค้ดอื่นที่สั้นๆที่แกะเองได้ จะได้ฝึกตัวเองและไม่เป็นภาระของผู้อื่น
จากคุณ : maddog [2014-02-02 01:19:50]

27.55.7.181 ความคิดเห็น #29003 (จาก IP: 27.55.7.181)
งั้นพี่ช่วยยกตัวอย่างโปรแกรมที่ง่ายๆยกเว้นเกมส์งู ox เครื่องคิดเลข ดูดวง เพราะเพื่อนเขาเอาแล้ว มันมีแต่เกมส์ที่โค้ดยากๆและก็ง่ายเกินขอแบบไม่ยากไม่ง่ายนะ พี่พอจะรู้ไหม ถ้าพี่รู้เรื่องนี้ดี เพราะหนูอยู่กับเพื่อนสองคนช่วยกันคิดแต่มันยากถ้าคิดเองก็ไม่รู้เริ่มอย่างไร ช่วยบอกแนวทางก็ได้น่ะคะ ขอรบกวนอีกนิด
จากคุณ : pin [2014-02-02 12:09:55]

103.5.27.31 ความคิดเห็น #29004 (จาก IP: 103.5.27.31)
ตามที่บอกไปแล้วว่า "คิดเองมันจะง่ายกว่า" คือถ้าพวกน้องๆคิดไม่ออกแปลความได้ว่า "ทุกอย่างยากสำหรับพวกน้องเสมอ" ซึ่งแน่นอนว่าบอกอะไรไปก็จะยากสำหรับน้อง

เช่น เกมส์เป่ายิ้งฉุบ เกมส์บวกเลขเร็ว เกมส์ป๊อกเด้ง บลาๆ

แนวทางสำหรับคนที่คิดเองไม่ได้ เขียนเองไม่เป็น คือการหาโค้ดเค้า แล้วเอามาแกะ มาศึกษา ติดตรงไหนก็มาสอบถามได้ ไม่ใช่ว่า "ช่วยทำให้ทั้งหมด" คงมีคนช่วยน้อย เราต้องหัดพึ่งตัวเองก่อน

ส่วนวิธีการพึ่งคนอื่นคือหาคนใกล้ตัว หรือ สอบถาม อ. ผู้สอนในประเด็นที่สงสัย หรือ จะไปเรียนคอร์สเพิ่มเติม เอาความรู้
สอบถามในเว็บบอร์ด (ในประเด็นที่ติดปัญหา)

การเขียนโปรแกรม คือ ทักษะ ถ้าไม่ฝึก ไม่อ่าน ไม่ทำ ก็จะเขียนไม่เป็น
จากคุณ : maddog [2014-02-02 14:56:19]
ตอบกระทู้
  • ห้ามการโฆษณา หากต้องการติดต่อหาลูกค้า ติดต่อโฆษณาโดยตรงได้ที่ webmaster@sourcecode.in.th
  • ห้ามใช้คำหยาบและคำพูดที่ไม่เหมาะสม
  • ขอสงวนสิทธิหากตรวจพบ ข้อความที่ไม่เหมาะสม ข้อความนั้นจะถูกลบทันที
ชื่อ
อีเมล์
รายละเอียด

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

 
 
คลิปสอนเขียนโปรแกรม
เรียนเขียนโปรแกรมดอทเน็ต
เรียนเขียนโปรแกรมแอนดรอยด์
เรียนเขียนโปรแกรมเบล็คเบอร์รี่
เรียนเขียนโปรแกรมซี ซีพลัสพลัส
เรียนเขียนโปรแกรมจาวา
เรียนการใช้งานลินุกส์
เรียนการเขียนโปรแกรมวินโดว์โฟน
เรียนการเขียนโปรแกรมพีเฮชพี มายเอสคิวเอล
อัตราค่าโฆษณา
 
Tutorial
eVB Tutorial
ASP.NET Webmatrix Tutorial
J2ME Tutorial
C++  Tutorial
Java  Tutorial
PHP Tutorial
ASP Tutorial
 
แบบสำรวจ

Home - Article - Tutorial - Sourcecode - Dev Handbook - Search - WebBoard - Links - About Us

สงวนลิขสิทธิ์ ห้ามคัดลอก ทำซ้ำ แก้ไข ดัดแปลง ไม่ว่าในรูปแบบใด โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์จากกระทรวงพาณิชย์: 7100503002000
Copyright 2001 SourceCode.in.th