diff options
Diffstat (limited to 'console')
| -rw-r--r-- | console/input | 14 | ||||
| -rw-r--r-- | console/main.py | 90 | ||||
| -rw-r--r-- | console/test.py | 24 | ||||
| -rw-r--r-- | console/v2.py | 105 | 
4 files changed, 0 insertions, 233 deletions
diff --git a/console/input b/console/input deleted file mode 100644 index 1243fe0..0000000 --- a/console/input +++ /dev/null @@ -1,14 +0,0 @@ -7 6 -4 -3 -3 -2 -1 -2 -2 -7 -1 -7 -1 -7 -1 diff --git a/console/main.py b/console/main.py deleted file mode 100644 index 433f130..0000000 --- a/console/main.py +++ /dev/null @@ -1,90 +0,0 @@ -from colorama import Fore -import os - -DISC_SHAPE = "o" -DISC_A = Fore.RED + DISC_SHAPE + Fore.RESET -DISC_B = Fore.BLUE + DISC_SHAPE + Fore.RESET -EMPTY = Fore.LIGHTBLACK_EX + "_" + Fore.RESET - -class bord: -    def __init__(self, w, h): -        self.width = w -        self.height = h -        self.board = [[EMPTY for x in range(self.width)] for u in range(self.height)] - -    def print(self): -        print("\n".join(["  ".join(self.board[y]) for y in range(len(self.board) -1, -1, -1)])) - -    def outside_board(self, coords): -        return coords[0] < 0 or \ -               coords[1] < 0 or \ -               coords[0] > self.height - 1 or \ -               coords[1] > self.width - 1 - -    def recursive_solve(self, coords, check_for, direction, current_length): -        new_position = ( -                coords[0] + direction[0], -                coords[1] + direction[1] -                ) -        if self.outside_board(new_position) or self.board[new_position[0]][new_position[1]] != check_for: -            return current_length -        else: -            return self.recursive_solve(new_position, check_for, direction, current_length + 1) - -    def check_win(self, coords): -        directions = [ -                ( 1,  0), -                ( 1,  1), -                ( 0,  1), -                (-1,  1), -                (-1,  0), -                (-1, -1), -                ( 0, -1), -                ( 1, -1) -                ] -        values = list() -        for direction in directions: -            values.append(self.recursive_solve(coords, self.board[coords[0]][coords[1]], direction, 0)) -        joined_directions = [ -                values[0] + values[4], -                values[1] + values[5], -                values[2] + values[6], -                values[3] + values[7] -                ] -        won = any(i >= 3 for i in joined_directions) -        if won: -            for i, value in enumerate(joined_directions): -                if value >= 3: -                    start_pos = ( -                            coords[0] + directions[i][0] * values[i], -                            coords[1] + directions[i][1] * values[i], -                            ) -                    end_pos = ( -                            coords[0] + directions[i+4][0] * values[i+4], -                            coords[1] + directions[i+4][1] * values[i+4], -                            ) -                    print(start_pos, end_pos) - -        return won - -    def drop_fisje(self, column, disc): -        for row, value in enumerate(self.board): -            if self.board[row][column] == EMPTY: -                self.board[row][column] = disc -                won = self.check_win((row, column)) -                print(won) -                return - -def main(): -    disc_a = True -    gert = bord(11, 8) -    while True: -        gert.print() -        column = int(input("column?: ")) - 1 -        os.system("clear") -        gert.drop_fisje(column, DISC_A if disc_a else DISC_B) -        disc_a = not disc_a - -if __name__ == "__main__": -    main() - diff --git a/console/test.py b/console/test.py deleted file mode 100644 index 8cc1db9..0000000 --- a/console/test.py +++ /dev/null @@ -1,24 +0,0 @@ -import subprocess - -w = 7 -h = 6 -column = 3 - -process = subprocess.Popen(["./voerbak"], -        stdin=subprocess.PIPE, -        stdout=subprocess.PIPE, -        stderr=None) - -process.stdin.write(bytearray(f"{w} {h}\n", "utf-8")) -process.stdin.flush() - -process.stdin.write(bytearray(f"{column}\n", "utf-8")) -process.stdin.flush() - -# process.stdin.write(b"0\n") -# process.stdin.flush() -# for c in iter(lambda: process.stdout.read(1), b''): -#     sys.stdout.write(c) - -print(process.stdout.readlines(5)) - diff --git a/console/v2.py b/console/v2.py deleted file mode 100644 index 69e61aa..0000000 --- a/console/v2.py +++ /dev/null @@ -1,105 +0,0 @@ -from colorama import Fore -import os -import time - -DISC_SHAPE = "o" -DISC_A = Fore.RED + DISC_SHAPE + Fore.RESET -DISC_B = Fore.BLUE + DISC_SHAPE + Fore.RESET -EMPTY = Fore.LIGHTBLACK_EX + "_" + Fore.RESET - -class bord: -    def __init__(self, w, h): -        self.width = w -        self.height = h -        self.board = [EMPTY] * (w * h) - -    def print(self): -        for y in range(self.height -1, -1, -1): -            for x in range(self.width): -                print(self.board[x + y * self.width], end="  ") -            print("\n", end="") - -    def recursive_solve(self, pos, check_for, direction, current_length): -        overflow = (pos % self.width) + direction -        if overflow == self.width or overflow == -1: # horizontal overflow -            return current_length -        new_position = pos + direction -        if new_position < 0 or new_position > self.width * self.height - 1: # vertical overflow -            return current_length -        if self.board[new_position] != check_for: -            return current_length -        return self.recursive_solve(new_position, check_for, direction, current_length + 1) - -    def check_win(self, pos): -        directions = [ -                self.width,      # north -                self.width + 1,  # northeast -                1,               # east -                -self.width + 1, # southeast -                -self.width,     # south -                -self.width - 1, # southwest -                -1,              # west -                self.width - 1,  # northwest -                ] -        values = list() -        for direction in directions: -            values.append(self.recursive_solve(pos, self.board[pos], direction, 0)) -        joined_directions = [ -                values[0] + values[4], -                values[1] + values[5], -                values[2] + values[6], -                values[3] + values[7] -                ] -        won = any(i >= 3 for i in joined_directions) -        if won: -            for i, value in enumerate(joined_directions): -                if value >= 3: -                    start_pos = pos + directions[i] * values[i] -                    end_pos = pos + directions[i+4] * values[i+4] -                    print(start_pos, end_pos) -                    self.board[start_pos] = "x" -                    self.board[end_pos] = "x" -        return won - -    def debug(self, pos): -        self.board[pos] = "x" -        directions = [ -                self.width,      # 0: north -                self.width + 1,  # 1: northeast -                1,               # 2: east -                -self.width + 1, # 3: southeast -                -self.width,     # 4: south -                -self.width - 1, # 5: southwest -                -1,              # 6: west -                self.width - 1,  # 7: northwest -                ] - -        for index, direction in enumerate(directions): -            new_position = pos + direction -            if new_position > len(self.board) - 1 or new_position < 0: continue -            if index in range(1, 4) and pos % self.width == self.width -1: continue -            if index in range(5, 8) and pos % self.width == 0: continue -            self.board[new_position] = "o" - -    def drop_fisje(self, column, disc): -        for row in range(self.height): -            pos = column + row * self.width -            if self.board[pos] == EMPTY: -                self.board[pos] = disc -                won = self.check_win(pos) -                print(won) -                return - -def main(): -    disc_a = True -    gert = bord(7, 6) -    for x in range(len(gert.board)): -        gert = bord(7, 6) -        gert.debug(x) -        gert.print() -        print("\n\n", end='') -        time.sleep(0.1) - -if __name__ == "__main__": -    main() -  |