텍스트 모드이므로
clrscr() 화면지우기
gotoxy(x, y) x,y 위치로 커서 옮기기 (단 텍스트 모드 이므로 80x25의 제한이 있겠죠)
를 이용하시면 고정프레임을 만들수 있습니다.
아래쪽 프로그램의 에러는 switch의 철자중에 t가 빠졌죠?
그 외에도 1번 선수의 이름이 두번 반복되어 나오고... 스코어 계산이 11:1 이 되면 이겼습니다 나오고
하는 기타등등은 다 고치실 수 있겠죠?
화이팅 하시기 바랍니다..
김영민 님이 쓰신 글 :
: 아래와 같은 프로그램을 짜고 있는데 두 가지 문제가 있습니다.
:
: 어떤 프로그램이냐면 탁구게임으로 승자를 선택하면 그 승자의 점수가 올라고,
:
: 그러다가 3세트를 다 이기면 경기가 종료되는 간단한 이지선다형의 프로그램입니다.
:
:
:
: 첫번째 문제는 결과 출력시 화면이 계속 내려가면서 지저분해지는데,
:
: 그렇게 안하고 화면을 고정시킨 다음에 결과값만 수정해 주려고 합니다.
:
: 포인터를 사용하면 된다고하던데 제가 보는 C로 배우는 프로그래밍 기초 라는 교재에는 방법이 안나와서
:
: 모르겠습니다. 다른 책도 2~3권 봤는데 안나왔더군요.
:
: 나왔어도 이해를 못해서 그런건지 도무지 모르겠습니다.
:
: 간단한 예라도 알려주시면 감사하겠습니다.
:
:
:
: 그리고 두번째 문제는 이게 가장 문제입니다.
:
: 프로그램의 마지막 부분의 스위치 문에서 오류가 나는데 왜 오류가 나는지 모르겠습니다.
:
: 책에 나온데로 짰는데 원인을 모르겠습니다.
:
: 인터넷에 나온 예문도 보고 실행도 시켜본 다음에 아래처럼 적용한건데, 오류가 납니다.
:
: 어떤 이윤지 모르겠습니다.
:
:
:
: 아 그리고 이 프로그램은 Dev C++ 로 짠건데 비주얼 C에서 제대로 작동할까요?
:
: 교수님께서 확인하시는 프로그램은 비주얼 C인데 전 비주얼 C가 없어서 Dev 로 하고 있습니다.
:
: 호환상에 문제는 없겠죠?
:
: 많은 분들의 조언 부탁드립니다.
:
:
:
:
: #include<stdio.h>
:
: void score (char name1[20], char name2[20], int score1, int score2, int set1, int set2);
:
:
: int main (void)
: {
:
: char name1[20], name2[20];
:
: int winner, score1 = 0, score2 = 0, set1 = 0, set2 = 0;
:
: printf("1번 선수 이름을 입력하시요\n");
:
: scanf("%s", name1);
:
: printf("1번 선수 이름을 입력하시요\n");
:
: scanf("%s", name2);
:
:
: while((set1 != 2) && (set2 != 2))
:
:
:
: {
:
:
: while((score1 != 11) && (score2 != 11)){
:
: printf("%s가 이겼다면 1을 %s가 이겼다면 2를 입력하시요 \n",name1 ,name2);
:
: scanf("%d",&winner);
:
: switch(winner)
:
: {
:
: case 1:
: score1 += 1;
: score(name1, name2, score1, score2, set1, set2);
: break;
:
: case 2:
: score2 += 1;
: score(name1, name2, score1, score2, set1, set2);
: break;
:
: default:
: printf("잘못 입력 했습니다. 재입력하시요\n");
: break;
: }
:
: }
:
:
: if(score1 == 11)
: {
:
: set1 += 1;
:
: printf("%s 가 %d : %d 로 %dSET를 이겼습니다.\n",name1, score1, score2, set1+set2);
:
: score1 = 0;
:
: score2 = 0;
: }
:
: else
: {
:
: set2 += 1;
:
: printf("%s 가 %d : %d 로 %dSET를 이겼습니다.\n",name2, score1, score2, set1+set2);
:
: score1 = 0;
:
: score2 = 0;
: }
:
:
: }
:
: if(set1 = 2)
:
: printf("%s 가 경기를 SET SCORE %d : %d 로 이겼습니다.\n",name2, score1, score2);
:
: else if(set2 = 2)
:
: printf("%s 가 경기를 SET SCORE %d : %d 로 이겼습니다.\n",name2, score1, score2);
:
: else;
:
:
: return 0;
: }
:
:
:
: void score (char name1[20], char name2[20], int score1, int score2, int set1, int set2)
:
: {
: int c=(score1 + score2);
: char a, b;
:
:
: swich(c/5)
:
: {
:
: case 1:
: a = 'O';
: b = 'X';
: break;
: case 2:
: a = 'O';
: b = 'X';
: break;
: case 3:
: a = 'O';
: b = 'X';
: break;
: case 4:
: a = 'O';
: b = 'X';
: break;
: case 5:
: a = 'O';
: b = 'X';
: break;
: case 6:
: a = 'O';
: b = 'X';
: break;
: default:
: a = 'O';
: b = 'X';
: break;
: }
:
:
: printf("|--------------------------|\n");
: printf("| NAME |%8s|%8s|\n", name1, name2);
: printf("| SET | %d | %d |\n",set1, set2);
: printf("| score | %2d | %2d |\n",score1,score2);
: printf("|--------------------------|\n");
: printf("|SERVICE| %c | %c |\n",a,b);
: printf("|--------------------------|\n");
: }
|