Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 예외미루기
- 객체 비교
- NestedFor
- 한국건설관리시스템
- 제네릭
- abstract
- EnhancedFor
- 추상메서드
- 사용자예외클래스생성
- 자바
- 컬렉션 타입
- 환경설정
- 메소드오버로딩
- GRANT VIEW
- 대덕인재개발원
- 정수형타입
- 자동차수리시스템
- Java
- exception
- oracle
- 컬렉션프레임워크
- 생성자오버로드
- 집합_SET
- 예외처리
- 참조형변수
- 인터페이스
- cursor문
- 다형성
- 어윈 사용법
- 오라클
Archives
- Today
- Total
거니의 velog
231106_파이썬 기초 8 본문
[day05.myomok02]
import sys
from PyQt5 import uic, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QPushButton
form_class = uic.loadUiType("myomok02.ui")[0]
class MainClass(QMainWindow, form_class):
def __init__(self):
QMainWindow.__init__(self)
self.arr2D = [
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0]
]
self.pb2D = []
self.flagWB = True
self.setupUi(self)
for i in range(10):
line = []
for j in range(10):
pb = QPushButton("", self)
pb.setToolTip("{},{}".format(i,j))
pb.setIcon(QtGui.QIcon('0.png'))
pb.setIconSize(QtCore.QSize(40, 40))
#pb.setGeometry(QtCore.QRect(i*40, j*40, 40, 40)) # x,y축 기준
pb.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) # 배열 기준
pb.clicked.connect(self.myclick)
line.append(pb)
self.pb2D.append(line)
self.show()
self.myrender()
def myrender(self):
# self.pb2D[3][1].setIcon(QtGui.QIcon('2.png'))
for i in range(0, 10): # y축
for j in range(0, 10): # x축
if self.arr2D[i][j] == 0:
self.pb2D[i][j].setIcon(QtGui.QIcon('0.png'))
if self.arr2D[i][j] == 1:
self.pb2D[i][j].setIcon(QtGui.QIcon('1.png'))
if self.arr2D[i][j] == 2:
self.pb2D[i][j].setIcon(QtGui.QIcon('2.png'))
def getUP(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDW(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getLE(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j - 1
if j < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def myclick(self) :
# print("myclick")
# self.arr2D[0][0] = 1
# self.myrender()
str_ij = self.sender().toolTip()
# print(str_ij)
arr_ij = str_ij.split(",")
# print(arr_ij)
str_i = arr_ij[0]
str_j = arr_ij[1]
# print(str_i, str_j)
i = int(str_i)
j = int(str_j)
# self.arr2D[i][j] = 1
# self.myrender()
if self.arr2D[i][j] > 0 :
return
stone = -1
if self.flagWB:
self.arr2D[i][j] = 2
stone = 2
else:
self.arr2D[i][j] = 1
stone = 1
up = self.getUP(i,j,stone)
#print("up",up)
dw = self.getDW(i,j,stone)
#print("dw",dw)
le = self.getLE(i,j,stone)
print("le",le)
self.myrender()
self.flagWB = not self.flagWB
# print(self.arr2D)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainClass()
app.exec_()
import sys
from PyQt5 import uic, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QPushButton
form_class = uic.loadUiType("myomok02.ui")[0]
class MainClass(QMainWindow, form_class):
def __init__(self):
QMainWindow.__init__(self)
self.arr2D = [
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0]
]
self.pb2D = []
self.flagWB = True
self.setupUi(self)
for i in range(10):
line = []
for j in range(10):
pb = QPushButton("", self)
pb.setToolTip("{},{}".format(i,j))
pb.setIcon(QtGui.QIcon('0.png'))
pb.setIconSize(QtCore.QSize(40, 40))
#pb.setGeometry(QtCore.QRect(i*40, j*40, 40, 40)) # x,y축 기준
pb.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) # 배열 기준
pb.clicked.connect(self.myclick)
line.append(pb)
self.pb2D.append(line)
self.show()
self.myrender()
def myrender(self):
# self.pb2D[3][1].setIcon(QtGui.QIcon('2.png'))
for i in range(0, 10): # y축
for j in range(0, 10): # x축
if self.arr2D[i][j] == 0:
self.pb2D[i][j].setIcon(QtGui.QIcon('0.png'))
if self.arr2D[i][j] == 1:
self.pb2D[i][j].setIcon(QtGui.QIcon('1.png'))
if self.arr2D[i][j] == 2:
self.pb2D[i][j].setIcon(QtGui.QIcon('2.png'))
def getUP(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDW(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getLE(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getRI(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def myclick(self) :
# print("myclick")
# self.arr2D[0][0] = 1
# self.myrender()
str_ij = self.sender().toolTip()
# print(str_ij)
arr_ij = str_ij.split(",")
# print(arr_ij)
str_i = arr_ij[0]
str_j = arr_ij[1]
# print(str_i, str_j)
i = int(str_i)
j = int(str_j)
# self.arr2D[i][j] = 1
# self.myrender()
if self.arr2D[i][j] > 0 :
return
stone = -1
if self.flagWB:
self.arr2D[i][j] = 2
stone = 2
else:
self.arr2D[i][j] = 1
stone = 1
up = self.getUP(i,j,stone)
#print("up",up)
dw = self.getDW(i,j,stone)
#print("dw",dw)
le = self.getLE(i,j,stone)
#print("le",le)
ri = self.getRI(i,j,stone)
print("ri",ri)
self.myrender()
self.flagWB = not self.flagWB
# print(self.arr2D)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainClass()
app.exec_()
import sys
from PyQt5 import uic, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QPushButton
form_class = uic.loadUiType("myomok02.ui")[0]
class MainClass(QMainWindow, form_class):
def __init__(self):
QMainWindow.__init__(self)
self.arr2D = [
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0]
]
self.pb2D = []
self.flagWB = True
self.setupUi(self)
for i in range(10):
line = []
for j in range(10):
pb = QPushButton("", self)
pb.setToolTip("{},{}".format(i,j))
pb.setIcon(QtGui.QIcon('0.png'))
pb.setIconSize(QtCore.QSize(40, 40))
#pb.setGeometry(QtCore.QRect(i*40, j*40, 40, 40)) # x,y축 기준
pb.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) # 배열 기준
pb.clicked.connect(self.myclick)
line.append(pb)
self.pb2D.append(line)
self.show()
self.myrender()
def myrender(self):
# self.pb2D[3][1].setIcon(QtGui.QIcon('2.png'))
for i in range(0, 10): # y축
for j in range(0, 10): # x축
if self.arr2D[i][j] == 0:
self.pb2D[i][j].setIcon(QtGui.QIcon('0.png'))
if self.arr2D[i][j] == 1:
self.pb2D[i][j].setIcon(QtGui.QIcon('1.png'))
if self.arr2D[i][j] == 2:
self.pb2D[i][j].setIcon(QtGui.QIcon('2.png'))
def getUP(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDW(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getLE(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getRI(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def myclick(self) :
str_ij = self.sender().toolTip()
arr_ij = str_ij.split(",")
str_i = arr_ij[0]
str_j = arr_ij[1]
i = int(str_i)
j = int(str_j)
if self.arr2D[i][j] > 0 :
return
stone = -1
if self.flagWB:
self.arr2D[i][j] = 2
stone = 2
else:
self.arr2D[i][j] = 1
stone = 1
up = self.getUP(i,j,stone)
dw = self.getDW(i,j,stone)
le = self.getLE(i,j,stone)
ri = self.getRI(i,j,stone)
ul = self.getUL(i,j,stone)
dr = self.getDR(i,j,stone)
ur = self.getUR(i,j,stone)
dl = self.getDL(i,j,stone)
print(up, dw, le, ri, ul, dr, ur, dl)
self.myrender()
self.flagWB = not self.flagWB
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainClass()
app.exec_()
import sys
from PyQt5 import uic, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QPushButton, QMessageBox
form_class = uic.loadUiType("myomok02.ui")[0]
class MainClass(QMainWindow, form_class):
def __init__(self):
QMainWindow.__init__(self)
self.arr2D = [
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0]
]
self.pb2D = []
self.flagWB = True
self.setupUi(self)
for i in range(10):
line = []
for j in range(10):
pb = QPushButton("", self)
pb.setToolTip("{},{}".format(i,j))
pb.setIcon(QtGui.QIcon('0.png'))
pb.setIconSize(QtCore.QSize(40, 40))
#pb.setGeometry(QtCore.QRect(i*40, j*40, 40, 40)) # x,y축 기준
pb.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) # 배열 기준
pb.clicked.connect(self.myclick)
line.append(pb)
self.pb2D.append(line)
self.show()
self.myrender()
def myrender(self):
# self.pb2D[3][1].setIcon(QtGui.QIcon('2.png'))
for i in range(0, 10): # y축
for j in range(0, 10): # x축
if self.arr2D[i][j] == 0:
self.pb2D[i][j].setIcon(QtGui.QIcon('0.png'))
if self.arr2D[i][j] == 1:
self.pb2D[i][j].setIcon(QtGui.QIcon('1.png'))
if self.arr2D[i][j] == 2:
self.pb2D[i][j].setIcon(QtGui.QIcon('2.png'))
def getUP(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDW(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getLE(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getRI(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def myclick(self) :
str_ij = self.sender().toolTip()
arr_ij = str_ij.split(",")
str_i = arr_ij[0]
str_j = arr_ij[1]
i = int(str_i)
j = int(str_j)
if self.arr2D[i][j] > 0 :
return
stone = -1
if self.flagWB:
self.arr2D[i][j] = 2
stone = 2
else:
self.arr2D[i][j] = 1
stone = 1
up = self.getUP(i,j,stone)
dw = self.getDW(i,j,stone)
le = self.getLE(i,j,stone)
ri = self.getRI(i,j,stone)
ul = self.getUL(i,j,stone)
dr = self.getDR(i,j,stone)
ur = self.getUR(i,j,stone)
dl = self.getDL(i,j,stone)
print(up, dw, le, ri, ul, dr, ur, dl)
d1 = up + dw + 1
d2 = ur + dl + 1
d3 = le + ri + 1
d4 = ul + dr + 1
if d1 == 5 or d2 == 5 or d3 == 5 or d4 == 5 :
str_win = "승리하였습니다."
QMessageBox.about(self,'Calling',str_win)
self.myrender()
self.flagWB = not self.flagWB
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainClass()
app.exec_()
import sys
from PyQt5 import uic, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QPushButton, QMessageBox
form_class = uic.loadUiType("myomok02.ui")[0]
class MainClass(QMainWindow, form_class):
def __init__(self):
QMainWindow.__init__(self)
self.arr2D = [
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0]
]
self.pb2D = []
self.flagWB = True
self.flagOver = False
self.setupUi(self)
for i in range(10):
line = []
for j in range(10):
pb = QPushButton("", self)
pb.setToolTip("{},{}".format(i,j))
pb.setIcon(QtGui.QIcon('0.png'))
pb.setIconSize(QtCore.QSize(40, 40))
#pb.setGeometry(QtCore.QRect(i*40, j*40, 40, 40)) # x,y축 기준
pb.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) # 배열 기준
pb.clicked.connect(self.myclick)
line.append(pb)
self.pb2D.append(line)
self.show()
self.myrender()
def myrender(self):
# self.pb2D[3][1].setIcon(QtGui.QIcon('2.png'))
for i in range(0, 10): # y축
for j in range(0, 10): # x축
if self.arr2D[i][j] == 0:
self.pb2D[i][j].setIcon(QtGui.QIcon('0.png'))
if self.arr2D[i][j] == 1:
self.pb2D[i][j].setIcon(QtGui.QIcon('1.png'))
if self.arr2D[i][j] == 2:
self.pb2D[i][j].setIcon(QtGui.QIcon('2.png'))
def getUP(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDW(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getLE(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getRI(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def myclick(self) :
if self.flagOver : return
str_ij = self.sender().toolTip()
arr_ij = str_ij.split(",")
str_i = arr_ij[0]
str_j = arr_ij[1]
i = int(str_i)
j = int(str_j)
if self.arr2D[i][j] > 0 :
return
stone = -1
if self.flagWB:
self.arr2D[i][j] = 2
stone = 2
else:
self.arr2D[i][j] = 1
stone = 1
up = self.getUP(i,j,stone)
dw = self.getDW(i,j,stone)
le = self.getLE(i,j,stone)
ri = self.getRI(i,j,stone)
ul = self.getUL(i,j,stone)
dr = self.getDR(i,j,stone)
ur = self.getUR(i,j,stone)
dl = self.getDL(i,j,stone)
print(up, dw, le, ri, ul, dr, ur, dl)
d1 = up + dw + 1
d2 = ur + dl + 1
d3 = le + ri + 1
d4 = ul + dr + 1
self.myrender()
if d1 == 5 or d2 == 5 or d3 == 5 or d4 == 5 :
str_win = "GAME OVER"
QMessageBox.about(self,'오목',str_win)
self.flagOver = True
self.flagWB = not self.flagWB
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainClass()
app.exec_()
import sys
from PyQt5 import uic, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QPushButton, QMessageBox
form_class = uic.loadUiType("myomok02.ui")[0]
class MainClass(QMainWindow, form_class):
def __init__(self):
QMainWindow.__init__(self)
self.arr2D = [
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0]
]
self.pb2D = []
self.flagWB = True
self.flagOver = False
self.setupUi(self)
for i in range(10):
line = []
for j in range(10):
pb = QPushButton("", self)
pb.setToolTip("{},{}".format(i,j))
pb.setIcon(QtGui.QIcon('0.png'))
pb.setIconSize(QtCore.QSize(40, 40))
#pb.setGeometry(QtCore.QRect(i*40, j*40, 40, 40)) # x,y축 기준
pb.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) # 배열 기준
pb.clicked.connect(self.myclick)
line.append(pb)
self.pb2D.append(line)
self.show()
self.myrender()
def myrender(self):
# self.pb2D[3][1].setIcon(QtGui.QIcon('2.png'))
for i in range(0, 10): # y축
for j in range(0, 10): # x축
if self.arr2D[i][j] == 0:
self.pb2D[i][j].setIcon(QtGui.QIcon('0.png'))
if self.arr2D[i][j] == 1:
self.pb2D[i][j].setIcon(QtGui.QIcon('1.png'))
if self.arr2D[i][j] == 2:
self.pb2D[i][j].setIcon(QtGui.QIcon('2.png'))
def getUP(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDW(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getLE(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getRI(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def myclick(self) :
if self.flagOver : return
str_ij = self.sender().toolTip()
arr_ij = str_ij.split(",")
str_i = arr_ij[0]
str_j = arr_ij[1]
i = int(str_i)
j = int(str_j)
if self.arr2D[i][j] > 0 :
return
stone = -1
if self.flagWB:
self.arr2D[i][j] = 2
stone = 2
else:
self.arr2D[i][j] = 1
stone = 1
up = self.getUP(i,j,stone)
dw = self.getDW(i,j,stone)
le = self.getLE(i,j,stone)
ri = self.getRI(i,j,stone)
ul = self.getUL(i,j,stone)
dr = self.getDR(i,j,stone)
ur = self.getUR(i,j,stone)
dl = self.getDL(i,j,stone)
print(up, dw, le, ri, ul, dr, ur, dl)
d1 = up + dw + 1
d2 = ur + dl + 1
d3 = le + ri + 1
d4 = ul + dr + 1
self.myrender()
if d1 == 5 or d2 == 5 or d3 == 5 or d4 == 5 :
#str_win = "GAME OVER"
if self.flagWB:
str_win = "흑돌 승리"
else:
str_win = "백돌 승리"
QMessageBox.about(self,'오목',str_win)
self.flagOver = True
self.flagWB = not self.flagWB
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainClass()
app.exec_()
import sys
from PyQt5 import uic, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QPushButton, QMessageBox
form_class = uic.loadUiType("myomok02.ui")[0]
class MainClass(QMainWindow, form_class):
def __init__(self):
QMainWindow.__init__(self)
self.arr2D = [
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0]
]
self.pb2D = []
self.flagWB = True
self.flagOver = False
self.setupUi(self)
for i in range(10):
line = []
for j in range(10):
pb = QPushButton("", self)
pb.setToolTip("{},{}".format(i,j))
pb.setIcon(QtGui.QIcon('0.png'))
pb.setIconSize(QtCore.QSize(40, 40))
#pb.setGeometry(QtCore.QRect(i*40, j*40, 40, 40)) # x,y축 기준
pb.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) # 배열 기준
pb.clicked.connect(self.myclick)
line.append(pb)
self.pb2D.append(line)
self.pbReset.clicked.connect(self.myreset)
self.show()
self.myrender()
def myreset(self):
#print("myreset")
for i in range(10):
for j in range(10):
self.arr2D[i][j] = 0
self.myrender()
self.flagWB = True
self.flagOver = False
def myrender(self):
# self.pb2D[3][1].setIcon(QtGui.QIcon('2.png'))
for i in range(0, 10): # y축
for j in range(0, 10): # x축
if self.arr2D[i][j] == 0:
self.pb2D[i][j].setIcon(QtGui.QIcon('0.png'))
if self.arr2D[i][j] == 1:
self.pb2D[i][j].setIcon(QtGui.QIcon('1.png'))
if self.arr2D[i][j] == 2:
self.pb2D[i][j].setIcon(QtGui.QIcon('2.png'))
def getUP(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDW(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getLE(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getRI(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def myclick(self) :
if self.flagOver : return
str_ij = self.sender().toolTip()
arr_ij = str_ij.split(",")
str_i = arr_ij[0]
str_j = arr_ij[1]
i = int(str_i)
j = int(str_j)
if self.arr2D[i][j] > 0 :
return
stone = -1
if self.flagWB:
self.arr2D[i][j] = 2
stone = 2
else:
self.arr2D[i][j] = 1
stone = 1
up = self.getUP(i,j,stone)
dw = self.getDW(i,j,stone)
le = self.getLE(i,j,stone)
ri = self.getRI(i,j,stone)
ul = self.getUL(i,j,stone)
dr = self.getDR(i,j,stone)
ur = self.getUR(i,j,stone)
dl = self.getDL(i,j,stone)
print(up, dw, le, ri, ul, dr, ur, dl)
d1 = up + dw + 1
d2 = ur + dl + 1
d3 = le + ri + 1
d4 = ul + dr + 1
self.myrender()
if d1 == 5 or d2 == 5 or d3 == 5 or d4 == 5 :
#str_win = "GAME OVER"
if self.flagWB:
str_win = "흑돌 승리"
else:
str_win = "백돌 승리"
QMessageBox.about(self,'오목',str_win)
self.flagOver = True
self.flagWB = not self.flagWB
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainClass()
app.exec_()
* 초기화 버튼 성공
[myomok03_19.ui]
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>955</width>
<height>760</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="pbReset">
<property name="geometry">
<rect>
<x>790</x>
<y>30</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="text">
<string>초기화</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>955</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
[day05.myomok03_19]
import sys
from PyQt5 import uic, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QPushButton, QMessageBox
form_class = uic.loadUiType("myomok03_19.ui")[0]
class MainClass(QMainWindow, form_class):
def __init__(self):
QMainWindow.__init__(self)
self.arr2D = [
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
[0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0],
]
self.pb2D = []
self.flagWB = True
self.flagOver = False
self.setupUi(self)
for i in range(19):
line = []
for j in range(19):
pb = QPushButton("", self)
pb.setToolTip("{},{}".format(i,j))
pb.setIcon(QtGui.QIcon('0.png'))
pb.setIconSize(QtCore.QSize(40, 40))
#pb.setGeometry(QtCore.QRect(i*40, j*40, 40, 40)) # x,y축 기준
pb.setGeometry(QtCore.QRect(j*40, i*40, 40, 40)) # 배열 기준
pb.clicked.connect(self.myclick)
line.append(pb)
self.pb2D.append(line)
self.pbReset.clicked.connect(self.myreset)
self.show()
self.myrender()
def myreset(self):
#print("myreset")
for i in range(19):
for j in range(19):
self.arr2D[i][j] = 0
self.myrender()
self.flagWB = True
self.flagOver = False
def myrender(self):
# self.pb2D[3][1].setIcon(QtGui.QIcon('2.png'))
for i in range(0, 19): # y축
for j in range(0, 19): # x축
if self.arr2D[i][j] == 0:
self.pb2D[i][j].setIcon(QtGui.QIcon('0.png'))
if self.arr2D[i][j] == 1:
self.pb2D[i][j].setIcon(QtGui.QIcon('1.png'))
if self.arr2D[i][j] == 2:
self.pb2D[i][j].setIcon(QtGui.QIcon('2.png'))
def getUP(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDW(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
if i < 0: # 파이썬에만 있는 오류로 index가 -1이 되는 순간 역회전을 함. 이를 방지한다.
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getLE(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getRI(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getUR(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i - 1
j = j + 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def getDL(self, i, j, stone):
cnt = 0
try: # 맨 밑 단을 누르면 프로그램이 종료되는 현상을 방지하기 위한 예외 처리문
while True:
i = i + 1
j = j - 1
if i < 0:
return cnt
if j < 0:
return cnt
if self.arr2D[i][j] == stone:
cnt = cnt + 1
else:
return cnt
except:
return cnt
def myclick(self) :
if self.flagOver : return
str_ij = self.sender().toolTip()
arr_ij = str_ij.split(",")
str_i = arr_ij[0]
str_j = arr_ij[1]
i = int(str_i)
j = int(str_j)
if self.arr2D[i][j] > 0 :
return
stone = -1
if self.flagWB:
self.arr2D[i][j] = 2
stone = 2
else:
self.arr2D[i][j] = 1
stone = 1
up = self.getUP(i,j,stone)
dw = self.getDW(i,j,stone)
le = self.getLE(i,j,stone)
ri = self.getRI(i,j,stone)
ul = self.getUL(i,j,stone)
dr = self.getDR(i,j,stone)
ur = self.getUR(i,j,stone)
dl = self.getDL(i,j,stone)
print(up, dw, le, ri, ul, dr, ur, dl)
d1 = up + dw + 1
d2 = ur + dl + 1
d3 = le + ri + 1
d4 = ul + dr + 1
self.myrender()
if d1 == 5 or d2 == 5 or d3 == 5 or d4 == 5 :
#str_win = "GAME OVER"
if self.flagWB:
str_win = "흑돌 승리"
else:
str_win = "백돌 승리"
QMessageBox.about(self,'오목',str_win)
self.flagOver = True
self.flagWB = not self.flagWB
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainClass()
app.exec_()
'대덕인재개발원 > 대덕인재개발원_파이썬 프로그래밍' 카테고리의 다른 글
231107_DB 개론 2 (0) | 2023.11.07 |
---|---|
231106_DB 개론 1 (0) | 2023.11.06 |
231103_파이썬 기초 7 (0) | 2023.11.03 |
231102_파이썬 기초 6 (0) | 2023.11.02 |
231101_파이썬 기초 5 (0) | 2023.11.01 |