게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
비주얼베이직 숫자야구만들었는데 어설픈 부분이 있어요
게시물ID : programmer_17250짧은주소 복사하기
작성자 : chulian
추천 : 0
조회수 : 489회
댓글수 : 2개
등록시간 : 2016/05/17 11:52:10
옵션
  • 본인삭제금지
Module Module1
    Sub Main()
        Dim a, u, a1, a2, a3, u1, u2, u3 As Integer
        Randomize()
        a = Rnd() * 899 + 100
        Console.WriteLine("{0}", a)
        a1 = Mid(a, 1, 1)
        a2 = Mid(a, 2, 1)
        a3 = Mid(a, 3, 1)
        If a1 <> a3 And a1 <> a2 And a3 <> a2 And a2 > 0 And a3 > 0 Then
            Console.WriteLine("게임을 시작하겠습니다")
            Console.WriteLine("1~9 를 사용하여 중복없는 세 자리 수를 입력하십시오")
        Else
            Console.WriteLine("게임을 다시 실행해주십시오")
        End If
        Do
            u = Console.ReadLine()
            u1 = Mid(u, 1, 1)
            u2 = Mid(u, 2, 1)
            u3 = Mid(u, 3, 1)
            If a1 = u1 And a2 = u2 And a3 = u3 Then
                Console.WriteLine("Home Run! 정답은 {0} 입니다", a)
                Console.WriteLine("게임을 종료하겠습니다.")
            ElseIf u1 = a1 And u2 <> a2 And u2 <> a3 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("1 Strike")
            ElseIf u2 = a2 And u1 <> a1 And u1 <> a3 And u3 <> a1 And u3 <> a3 Then
                Console.WriteLine("1 Strike")
            ElseIf u3 = a3 And u1 <> a1 And u1 <> a2 And u2 <> a1 And u2 <> a2 Then
                Console.WriteLine("1 Strike")
            ElseIf u1 = a1 And u2 <> a2 And u2 <> a3 And u3 <> a3 And u3 = a2 Then
                Console.WriteLine("1 Strike 1 Ball")
            ElseIf u1 = a1 And u2 = a3 And u2 <> a2 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("1 Strike 1 Ball")
            ElseIf u2 = a2 And u1 <> a1 And u1 <> a3 And u3 = a1 Then
                Console.WriteLine("1 Strike 1 Ball")
            ElseIf u2 = a2 And u1 <> a1 And u1 = a3 And u3 <> a1 And u3 <> a2 Then
                Console.WriteLine("1 Strike 1 Ball")
            ElseIf u3 = a3 And u1 = a2 And u1 <> a1 And u2 <> a1 And u2 <> a2 Then
                Console.WriteLine("1 Strike 1 Ball")
            ElseIf u3 = a3 And u2 = a1 And u2 <> a2 And u1 <> a1 And u1 <> a2 Then
                Console.WriteLine("1 Strike 1 Ball")
            ElseIf u1 = a1 And u2 = a3 And u3 = a2 Then
                Console.WriteLine("1 Strike 2 Ball")
            ElseIf u2 = a2 And u1 = a3 And u3 = a1 Then
                Console.WriteLine("1 Strike 2 Ball")
            ElseIf u3 = a3 And u1 = a2 And u2 = a1 Then
                Console.WriteLine("1 Strike 2 Ball")
            ElseIf u1 = a1 And u2 = a2 And u3 <> a3 Then
                Console.WriteLine("2 Strike")
            ElseIf u1 <> a1 And u2 = a2 And u3 = a3 Then
                Console.WriteLine("2 Strike")
            ElseIf u1 = a1 And u2 <> a2 And u3 = a3 Then
                Console.WriteLine("2 Strike")
            ElseIf u1 = a3 And u2 = a1 And u3 = a2 Then
                Console.WriteLine("3 Ball")
            ElseIf u1 = a2 And u2 = a3 And u3 = a1 Then
                Console.WriteLine("3 Ball")
            ElseIf u1 <> a1 And u1 <> a2 And u1 <> a3 And u2 = a1 And u2 <> a2 And u2 <> a3 And u3 <> a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("1 Ball")
            ElseIf u1 <> a1 And u1 <> a2 And u1 <> a3 And u2 <> a1 And u2 <> a2 And u2 <> a3 And u3 = a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("1 Ball")
            ElseIf u1 = a2 And u1 <> a1 And u1 <> a3 And u2 <> a1 And u2 <> a2 And u2 <> a3 And u3 <> a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("1 Ball")
            ElseIf u1 <> a1 And u1 <> a2 And u1 <> a3 And u2 <> a1 And u2 <> a2 And u2 <> a3 And u3 = a2 And u3 <> a1 And u3 <> a3 Then
                Console.WriteLine("1 Ball")
            ElseIf u1 = a3 And u1 <> a1 And u1 <> a2 And u2 <> a1 And u2 <> a2 And u2 <> a3 And u3 <> a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("1 Ball")
            ElseIf u1 <> a1 And u1 <> a2 And u1 <> a3 And u2 = a3 And u2 <> a1 And u2 <> a2 And u3 <> a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("1 Ball")
            ElseIf u1 = a2 And u1 <> a1 And u1 <> a3 And u2 <> a1 And u2 <> a2 And u2 <> a3 And u3 = a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            ElseIf u1 <> a1 And u1 <> a2 And u1 <> a3 And u2 = a1 And u2 <> a2 And u2 <> a3 And u3 <> a1 And u3 = a2 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            ElseIf u1 = a2 And u1 <> a1 And u1 <> a3 And u2 = a1 And u2 <> a2 And u2 <> a3 And u3 <> a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            ElseIf u1 = a3 And u1 <> a1 And u1 <> a2 And u2 <> a1 And u2 <> a2 And u2 <> a3 And u3 = a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            ElseIf u1 = a3 And u1 <> a1 And u1 <> a2 And u2 = a1 And u2 <> a2 And u2 <> a3 And u3 <> a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            ElseIf u1 <> a1 And u1 <> a2 And u1 <> a3 And u2 = a3 And u2 <> a1 And u2 <> a2 And u3 = a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            ElseIf u1 = a2 And u1 <> a1 And u1 <> a3 And u2 = a3 And u2 <> a1 And u2 <> a2 And u3 <> a1 And u3 <> a2 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            ElseIf u1 <> a1 And u1 <> a2 And u1 <> a3 And u2 = a3 And u2 <> a1 And u2 <> a2 And u3 = a2 And u3 <> a1 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            ElseIf u1 = a3 And u1 <> a1 And u1 <> a2 And u2 <> a1 And u2 <> a2 And u2 <> a3 And u3 = a2 And u3 <> a1 And u3 <> a3 Then
                Console.WriteLine("2 Ball")
            Else
                Console.WriteLine("OUT")
            End If
        Loop Until u1 = a1 And u2 = a2 And u3 = a3
        Console.ReadLine()
    End Sub
End Module
 
 
아 먼저 변수에 대해서 말씀드리자면
 
a는 answer 즉 랜덤으로 나오는 답을 말하는거고
 
a1, a2, a3는 각각 100의자리수 10의자리수 1의자리수를 표현한겁니다
 
u는 사용자가 맞추려고하는 숫자고요
 
역시 u1, u2 , u3은 똑같은 개념입니다
빨간색으로 된 부분있잖아요 .. 저 부분이 사실 왜 저렇게 된거냐면

숫자야구는 보통 1~9의 숫자를 써요

즉 109 , 210 , 300 이런 숫자를 안쓴다는거죠

이런 숫자들을 제외하려고

 If a1 <> a3 And a1 <> a2 And a3 <> a2 And a2 > 0 And a3 > 0 Then

이런 조건문을 제시했는데 문제는 이 조건을 만족하지 못한 숫자가 랜덤으로 나왔을 시

즉 , 101, 210 이런 숫자가 나왔을땐 제가

  Else
            Console.WriteLine("게임을 다시 실행해주십시오")

이런 조건을 걸었거든요

어설프죠 ㅎㅎ

그냥 애초에 처음부터 100~999인 숫자인데 십의자리와 일의자리에 0이 안들어가는 숫자들을

걸러내려면 조건을 어떻게 써야할까요 ??

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