2014-12-02 11 views
0

나는 X와 O 대신 세포 내부의 청색 (사용자)과 적색 (매크로)의 색을 지정하고 AI는 사용하지 않는 클래스의 매우 간단한 Tic Tac Toe를 만들려고합니다. . 제가 생각 할 때마다간단한 Tic Tac Toe on excel VBA

하지만 나는 그것이 무한 루프에 들어가는 그것을 가지고

Sub Tic() 

Dim r1 As Integer 
Dim r2 As Integer 


Do 

r1 = Int(Rnd * 3) + 1 
r2 = Int(Rnd * 3) + 1 

If Cells(r1, r2).Interior.Color = xlNone Then 'with colorindex instead of color it fills before crashing 



Cells(r1, r2).Interior.Color = vbRed 


End If 


Loop While Cells(r1, r2).Interior.Color = vbBlue Or Cells(r1, r2).Interior.Color <> vbRed 

'tried removing the first condition but the result is the same, same with changing the second to equal 


End Sub 

이제 임 단지 내가

그래서 내가 '무엇을 너무 많이 변경 어차피 내가 지금 사용하고 기능을 사용할 수 그것이해야한다고 생각하는 것은 세포가 어떤 색깔로 채워지지 않았는지를 확인하는 것입니다. 그러면 파란색이나 적색이면 아무 것도하지 않고 채워지지 않은 다른 세포를 찾으십시오.

상관없이 난 그냥 당신이 ID를 대답하지 못할 그래서 만약 누군가가 그냥에 집중할 수 있도록 잘못되는 부분을 지적하면 그것을 감사 잘못 어떤 부분이 잘 모릅니다 어떻게 그것을보고 그것을

+0

그냥 궁금해서 사용할 수 있습니다; 네가 찾고있는 뭔가가 있니? – DeanOC

답변

1

루프 안타 파란색 셀이면 If 문이 실행되지 않고 While 조건이 충족되어 루프에 걸릴 수 있습니다.

아마도 루프를 입력하기 전에 색이 아닌 셀 수의 카운터를 설정 한 다음 셀을 색칠 할 때마다 감소시키는 것이 더 나을 것입니다. 그리고 카운터가 0

때 루프를 종료 할 수 있습니다 그래서 당신은 9 개 셀이있는 경우, 당신은 당신의 허용 대답을 반전에 대한

Dim r1 As Integer 
Dim r2 As Integer 
Dim blankCells As Integer 

blankCells = 9 

Do 

r1 = Int(Rnd * 3) + 1 
r2 = Int(Rnd * 3) + 1 

If Cells(r1, r2).Interior.Color = xlNone Then 'with colorindex instead of color it fills before crashing 

    blankCells = blankCells - 1 

    Cells(r1, r2).Interior.Color = vbRed 


End If 


Loop While blankCells > 0