실행코드 ¶
~cpp code
import javax.swing.JOptionPane;
public class NumberBaseBallGame {
private String resultNumber;
private String userNumber;
public static void main(String[] args) {
NumberBaseBallGame game = new NumberBaseBallGame();
game.excute();
}
public void excute() {
// make a result number
createResultNumber();
do {
// input number from user
inputNumber();
// show score
JOptionPane.showMessageDialog(null, checkScore());
} while(checkScore() != "You are correct!");
}
public String inputNumber() {
return userNumber = JOptionPane.showInputDialog(null, "Enter number what you think");
}
public void createResultNumber() {
String fstNum, secNum, trdNum;
do {
fstNum = "" + (Math.random()*10);
secNum = "" + (Math.random()*10);
trdNum = "" + (Math.random()*10);
}while(fstNum.equals(secNum) || secNum.equals(trdNum) || fstNum.equals(trdNum));
resultNumber = fstNum + secNum + trdNum;
}
public String checkScore() {
int numOfStrike = 0;
int numOfBall = 0;
for (int i = 0 ; i < 3 ; i++) {
for (int j = 0 ; j < 3 ; j++) {
if (resultNumber.charAt(i) == userNumber.charAt(j)) {
if (i == j) {
numOfStrike++;
} else {
numOfBall++;
}
}
}
}
if (numOfStrike == 3)
return "You are correct!";
else
return "" + numOfStrike + " Strike, " + numOfBall + " Ball";
}
///////////////////////////////////////////////////////////////
public void setResultNumber(String resultNumber) {
this.resultNumber = resultNumber;
}
public String getUserNumber() {
return userNumber;
}
public String getResultNumber() {
return resultNumber;
}
}
테스트 코드 ¶
~cpp code
import junit.framework.TestCase;
public class NumberBaseBallGameTest extends TestCase {
public NumberBaseBallGame object;
protected void setUp() throws Exception {
object = new NumberBaseBallGame();
}
protected void tearDown() throws Exception {
}
public void testInputNumber() {
String testString = object.inputNumber();
if (testString.charAt(0) == '1' &&
testString.charAt(1) == '2' &&
testString.charAt(2) == '3')
assertTrue(true);
else
assertTrue(false);
}
public void testCreateResultNumber() {
object.createResultNumber();
assertNotSame(object.getResultNumber().charAt(0), object.getResultNumber().charAt(1));
assertNotSame(object.getResultNumber().charAt(1), object.getResultNumber().charAt(2));
assertNotSame(object.getResultNumber().charAt(0), object.getResultNumber().charAt(2));
}
public void testCheckScore() {
object.inputNumber();
object.setResultNumber("132");
assertEquals("1 Strike, 2 Ball", object.checkScore());
}
}
잡담 ¶
- TDD로 ë§Œë“¤ë ¤ê³ í•˜ë‹ˆ ì �ì�‘ë�„ 안ë�˜ê³ 해서 시간ì�´ 꽤나 ë§Žì�´ 걸리네요^^; 프로그램ì�„ 위한 테스트ë�¼ê¸° 보단 테스트를 위한 프로그램ì�´ ë�˜ì–´ì§€ëŠ” ëŠ�낌ì�´ íŒ�íŒ�;;; 하지만 장ì �ì�´ ë§Žì�€ 방법ì�´ë�¼ 앞으로 ë�” 연습ì�„ í•´ ë´�ì•¼ê² ë„¤ìš”~ - ìƒ�ìš±
- 테스트 코드를 ê°–ê³ ì–´ë–»ê²Œ 해야하는지 잘 ëª¨ë¥´ê² ì–´ìš”. import junit.framework.TestCase 구문ì�´ 있ë�˜ë�° ì�´ê²ƒì�€ 어디서 ê°€ì ¸ì™€ì•¼ 하나요? -_-;; - 문ì›�명
- 내 경험으로는 테스트� 휘둘리기 보다는 테스트를 �구로 여기는 마�드가 중요한 것 같당. 테스트가 우리를 �하는 길로 알아서 ��해주지는 않��
- JUnit 4.1ì�„ 추천합니다. 3~4ë…„ 후ì—�는 4.1ì�´ ì�¼ë°˜í™” ë�˜ì–´ ìžˆê² ì£ . 사용하다 보니, 4.1ì�€ ë°°ì—´ê°„ì�˜ 비êµ�까지 Overloadingë�˜ì–´ 있어서 편합니다. 다ì�Œì�˜ ì˜ˆì œë¥¼ 보세요. SeeAlso JUnit in CenterStage --NeoCoin
- 오옷~ �사해요 �민�형^^ - �욱
- 오옷~ �사해요 �민�형^^ - �욱
- JUnit 4.1ì�„ 추천합니다. 3~4ë…„ 후ì—�는 4.1ì�´ ì�¼ë°˜í™” ë�˜ì–´ ìžˆê² ì£ . 사용하다 보니, 4.1ì�€ ë°°ì—´ê°„ì�˜ 비êµ�까지 Overloadingë�˜ì–´ 있어서 편합니다. 다ì�Œì�˜ ì˜ˆì œë¥¼ 보세요. SeeAlso JUnit in CenterStage --NeoCoin
~java
package test;
import java.util.Arrays;
import org.junit.Test;
import static org.junit.Assert.*;
public class JUnit41Test {
@Test
public void name() {
String[] actual = { "1", "2", "3" }, expect = { "1", "2", "3" };
Integer[] actual2 = { 1, 2, 3 }, expect2 = { 1, 2, 3 };
assertEquals(Arrays.asList(actual), Arrays.asList(expect));
assertEquals(actual, expect);
assertEquals(actual2, expect2);
}
}
~java
import java.util.Arrays;
import junit.framework.TestCase;
public class JUnit38Test extends TestCase {
public void name() {
String[] actual = { "1", "2", "3" }, expect = { "1", "2", "3" };
Integer[] actual2 = { 1, 2, 3 }, expect2 = { 1, 2, 3 };
assertEquals(Arrays.asList(actual), Arrays.asList(expect));
assertEquals(actual, expect);
assertEquals(actual2, expect2);
}
}
- ê·¸ë¦¬ê³ ìŠ¤íŽ™ì�„ 좀ë�” 명확하게 하면 짜는 입장ì—�서 ë�” 쉬울 ê²�니다. 그러니까. 숫ìž�야구 ê°™ì�´ ë§�ì�´ì§€ìš”. ê·¸ë¦¬ê³ ì˜ˆì™¸ì²˜ë¦¬ 하세요. 아래와 ê°™ì�´ìš”. --NeoCoin
~python
# -*- coding: cp949 -*-
LENGTH,START,END,TURN_LIMIT=3,100,999,8
def Answer():
from random import randint
while True:
answer = str(randint(START,END))
if len(set(answer)) == LENGTH: return answer
def Question():
while True:
try:
question=raw_input('숫ìž�를 ìž…ë ¥í•´ 주세요. : ')
if len(question) == LENGTH and len(set(question)) == LENGTH:
return question
else: raise ValueError
except ValueError:
print '--0으로 시작하지 않는, 겹치지 않는 숫� %d개를 넣어 주세요.--'%LENGTH
def Compare(answer,question):
strike,ball,out=0,0,0
for idx,i in enumerate(question):
if question[idx] == answer[idx]:strike += 1
elif i in answer: ball +=1
else: out+=1
return [strike,ball,out]
def Show(sbo,count, end=True):
if isEnd:print '%d 회 스트��� 아웃!' % count
else: print '%d 회 %d 스트��� %d 볼 %d 아웃' % tuple([count]+sbo)
answer=Answer()
print answer
for count in xrange(1,TURN_LIMIT+1):
sbo = Compare(answer,Question())
isEnd = sbo[0] == LENGTH
Show(sbo,count,isEnd)
if isEnd:break
else:print '%d회 시� 실패하였습니다.' %count
- ã…‹... Python... 요새 조금씩 ë³´ê³ ìžˆì§€ë§Œ 쓰기 괜찮ì�€ 언어ë�¼ê³ ìƒ�ê°�ì�´ 들ë�”êµ°ìš”^^ - ìƒ�ìš±
- 나는 Pythonì�´ë“ , Perlì�´ë“ 반드시 학습 해야ë�œë‹¤ê³ ìƒ�ê°�한다. 그래야 다른 언어들ì�„ 잘 쓸수 있었다. 예를들어 Java Collection Framework를 ì•Œê³ ëŠ” 있었지만 잘 ì†�ì�´ 안나갔는ë�°, STLê³¼ Pythonì�„ ì�µížˆê³ 나니까 아주 ì†�쉽게 쓰게 ë�˜ë�”구나.
- ì�´ 언어들ì�˜ 시작ì �으로는 간단한 계산ì�´ í•„ìš”í• ë•Œ 계산기보다 열기보다 늘 IDLE나 rib(ruby)를 열어서 계산ì�„ 하지. 예를들어서 et-house환급코드 in CenterStage ê°™ì�€ 경우ë�„ 그래. ì•„ ê·¸ë¦¬ê³ ì € 코드 êµ°ì—� 있ì�„때 심심풀ì�´ 땅콩으로 짜논거. SeeAlso 숫ìž�야구 in CenterStage
- 허나 과거는 잊어버리는 모양ì�´ë‹¤. 열혈강ì�˜ Pythonì�„ 보니 옆면ì—� 열심히 본 í�”ì �ì�´ 있군. Rubyë�„ SVN history를 보니 í�”ì �ì�´ ë§Žì�´ ë‚¨ì•„ìžˆê³ .. ì–´ëŠ�ì •ë�„ 시간ì�„ 투ìž�해야 ë�˜ëŠ” 것 같아. --NeoCoin
- 나는 Pythonì�´ë“ , Perlì�´ë“ 반드시 학습 해야ë�œë‹¤ê³ ìƒ�ê°�한다. 그래야 다른 언어들ì�„ 잘 쓸수 있었다. 예를들어 Java Collection Framework를 ì•Œê³ ëŠ” 있었지만 잘 ì†�ì�´ 안나갔는ë�°, STLê³¼ Pythonì�„ ì�µížˆê³ 나니까 아주 ì†�쉽게 쓰게 ë�˜ë�”구나.
- Python Good~! 요새는 파��만 씀.. ㅋ - (namsnag)
JTDStudy/ì²«ë²ˆì§¸ê³¼ì œ










