게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
빙고게임을 C++로 한번 만들어봤는데...
게시물ID : computer_87895짧은주소 복사하기
작성자 : W.I.N.D.Y
추천 : 0
조회수 : 3494회
댓글수 : 1개
등록시간 : 2013/05/13 15:31:52

#include<iostream>
#include<ctime>
using namespace std;
#define MAX 25

class bingo
{
public:
 void random(int val1);//숫자를 입력 받아서 랜덤으로 숫자를 빙고판에 뿌리는 함수
 void showbingo();//현재 빙고판을 보여주는 함수
 void inputval(int val2);//선택할 숫자를 입력 받아서 빙고판에 넣는 함수
 bool checkbing();//빙고인지 확인하는 함수
 void play();//게임하는 함수

private:
 int** bing1;
 int value;
 int r,c;
};

void bingo::random(int val1){
 int x,t;
 int r1,c1;
 int count;

 bing1 = new int *[MAX];
 value = val1;

 x = value * value;
 srand((unsigned)time(0));
 for(r=0;r<value;r++){
  bing1[r] = new int[value];
 }
 for(r=0;r<value;r++){
  for(c=0;c<value;c++){
   bing1[r][c] = 0;
  }
 }
 for(r=0;r<value;r++){
  for(c=0;c<value;c++){
   back:
   count = 0;
   if(r == value/2 && c == value/2){
    continue;
   }
   else{
    t = (rand()%x) + 1;
    for(r1=0;r1<value;r1++){
     for(c1=0;c1<value;c1++){
      if(bing1[r1][c1] == t){
       count++;
       break;
      }
      else
       continue;
     }
    }
    if(count == 0)
     bing1[r][c] = t;
    else
     goto back;
   }
  }
 }
}

void bingo::showbingo(){
 cout<<"Your bingo card:"<<endl;
 for(r=0;r<value;r++){
  for(c=0;c<value;c++){
   cout<<bing1[r][c]<<"  ";
  }
  cout<<endl;
 }
}

void bingo::inputval(int val2){
 for(r=0;r<value;r++){
  for(c=0;c<value;c++){
   if(bing1[r][c] == val2)
    bing1[r][c] = 0;
    break;
  }
 }
}

bool bingo::checkbing(){
 int count;
 for(r=0;r<value;r++){
  count = 0;
  for(c=0;c<value;c++){
   if(bing1[r][c] == 0)
    count++;
  }
  if(count == value)
   return true;
 }
 for(r=0;r<value;r++){
  count = 0;
  for(c=0;c<value;c++){
   if(bing1[c][r] == 0)
    count++;
  }
  if(count == value)
   return true;
 }

 count = 0;

 for(r=0;r<value;r++){
  if(bing1[r][r] == 0)
   count++;
  if(count == value)
   return true;
 }

 count = 0;

 for(r=0;r<value;r++){
  if(bing1[r][value - r] == 0)
   count++;
  if(count == value)
   return true;
 }

 return false;
}

void bingo::play(){
 int val3;
 
 showbingo();
 while(1){
  cout<<"Draw one number: ";
  cin>>val3;
  cout<<endl;
  inputval(val3);
  showbingo();
  if(checkbing() == 1){
   cout<<"BINGO!!!"<<endl;
   break;
  }
 }
}

void main()
{
 bingo B;
 
 int rc;
 cout<<"Input the number of row and col:";
 cin>>rc;

 B.random(rc);
 B.play();

 system("pause");

}

동적할당을 활용해서 빙고게임을 만들었는데, 문제가 발생하네요..

숫자를 입력했을때, bing1[r][0]의 값, 즉 맨 앞줄의 값만 인식하여서 그 값들을 제외하고는 값이 변환이 안되네요...

inputval의 함수를 수정을 해줘야 될것 같긴한데..

빙고판이 출력될때, 빙고판이 제대로 출력 된다는 말은 포인터를 제대로 인식을 한다는 소리인데..

왜 값을 변형하려는게 안될까요???

왜 그런건가요??

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호