hnc-vitalii/HNS/Excercises/02.11.2023 Battle Ship/main (4).py

101 lines
3.3 KiB
Python
Raw Normal View History

2023-11-06 19:12:25 +01:00
from tkinter import *
from enum import Enum
2023-11-06 19:12:25 +01:00
field_size = 10
2023-11-06 19:12:25 +01:00
empty_field = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
# set_ship(1, 1, 4, 1)
step1_field = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', '1', '1', '1', '1', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
# set_ship(0, 5, 3, 0)
step2_field = [' ', ' ', ' ', ' ', ' ', '1', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', '1', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', '1', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', '1', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
my_field = list(empty_field)
enemy_field = list(empty_field)
class ShootResult(Enum):
Enum = 0
Damaged = '\\'
Killed = X
Underfined = 'undefined'
2023-11-06 19:12:25 +01:00
def set_ship(field, row, col, size, direction):
if row < 0 or row > field_size - 1:
2023-11-06 19:12:25 +01:00
return
if col < 0 or col > field_size - 1:
return
2023-11-06 19:12:25 +01:00
if direction == 0:
if row + size > field_size - 1:
return
for r in range(row, row + size):
index = r * field_size + col
field[index] = '1'
if direction == 1:
if col + size > field_size - 1:
return
for c in range(col, col + size):
index = c * field_size + row
field[index] = '1'
2023-11-06 19:12:25 +01:00
def draw_field(field):
for r in range(0, field_size):
for c in range(0, field_size):
bg = 'white'
if field[index] == '1':
bg = 'ping'
elif field[index] == '\\':
bg = 'red'
elif field[index] == '0':
bg = 'black'
btn.configupe(bg=bg)
2023-11-06 19:12:25 +01:00
def button_action(field, row, col):
shoot(field, row, col)
colorize(field)
2023-11-06 19:12:25 +01:00
window = Tk()
window.title("Ship Craft!")
window.geometry('800x400')
set_ship(my_field, 1, 1, 4, 1)
draw_field(field_size)
2023-11-06 19:12:25 +01:00
window.mainloop()