diff --git a/55_Life/.life.bas.swp b/55_Life/.life.bas.swp deleted file mode 100644 index e905a787..00000000 Binary files a/55_Life/.life.bas.swp and /dev/null differ diff --git a/56_Life_for_Two/.lifefortwo.bas.swp b/56_Life_for_Two/.lifefortwo.bas.swp deleted file mode 100644 index a40819f1..00000000 Binary files a/56_Life_for_Two/.lifefortwo.bas.swp and /dev/null differ diff --git a/56_Life_for_Two/javascript/.lifefortwo.js.swp b/56_Life_for_Two/javascript/.lifefortwo.js.swp deleted file mode 100644 index da1d2172..00000000 Binary files a/56_Life_for_Two/javascript/.lifefortwo.js.swp and /dev/null differ diff --git a/56_Life_for_Two/python/LIFE2.py b/56_Life_for_Two/python/LIFE2.py deleted file mode 100644 index a15a9b2f..00000000 --- a/56_Life_for_Two/python/LIFE2.py +++ /dev/null @@ -1,136 +0,0 @@ -# Variable Initialisation -gn, gk, ga, gx, gy = [], [], [], [], [] -gk = [3, 102, 103, 120, 130, 121, 112, 111, 12, 21, 30, 1020, 1030, 1011, 1021, 1003, 1002, 1012] -ga = [-1, 0, 1, 0, 0, -1, 0, 1, -1, -1, 1, -1, -1, 1, 1, 1] -m2, m3 = 0, 0 - -# Initialise the board -for j in range(6): - gn[j] = [] - for k in range(6): - gn[j][k] = 0 - -# Helper Functions -def tab(number) -> str: - t = "" - while len(t) < number: - t += " " - return t - -def display_header() -> None: - print("{}LIFE2\n".format(tab(33))) - print("{}CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n\n\n\n".format(tab(15))) - print("{}U.B. LIFE GAME".format(tab(10))) - -# Board Functions -def setup_board() -> None: - # Players add symbols to initially setup the board - for b in range(1, 3): - p1 = 30 if b == 2 else 3 - print("\n\nPLAYER {} - 3 LIVE PIECES.".format(b)) - for k1 in range(1, 3): - query_player(b) - gn[gx[b]][gy[b]] = p1 - -def modify_board() -> None: - # Players take turns to add symbols and modify the board - for b in range(1, 3): - print("\n\nPLAYER {} ".format(b)) - query_player(b) - if b == 99: - break - if b <= 2: - gn[gx[1]][gy[1]] = 100 - gn[gx[2]][gy[2]] = 1000 - -def simulate_board() -> None: - # Simulate the board for one step - for j in range(1, 6): - for k in range(1, 6): - if gn[j][k] > 99: - b = 1 if gn[j][k] <= 999 else 10 - for o1 in range(1, 16, 2): - gn[j + ga[o1]][k + ga[o1 + 1]] = gn[j + ga[o1]][k + ga[o1 + 1]] + b - -def display_board() -> None: - # Draws the board with all symbols - m2, m3 = 0, 0 - for j in range(7): - print("\n") - for k in range(7): - if j == 0 or j == 6: - if k != 6: - print(" " + str(k) + " ") - else: - print(" 0 ") - if k == 0 or k == 6: - if j != 6: - print(" " + str(j) + " ") - else: - print(" 0\n") - else: - if gn[j][k] < 3: - gn[j][k] = 0 - print(" ") - else: - for o1 in range(19): - if gn[j][k] == gk[o1]: - if o1 > 9: - gn[j][k] = 1000 - m3 += 1 - print(" # ") - else: - gn[j, k] = 100 - m2 += 1 - print(" * ") - gn[j][k] = 0 - print(" ") - -# Player Functions -def query_player(b) -> None: - # Query player for symbol placement coordinates - while True: - print("X,Y\nXXXXXX\n$$$$$$\n&&&&&&\n") - x_ = input("") - y_ = input(" ") - x_ = [int(num) for num in x_.split() if num.isdigit()][0] - y_ = [int(num) for num in y_.split() if num.isdigit()][0] - gx[b], gy[b] = x_, y_ - if gx[b] in range(1, 6) and gy[b] in range(1, 6) and gn[gx[b]][gy[b]] != 0: - break - print("ILLEGAL COORDS. RETYPE\n") - if b != 1: - if gx[1] == gx[2] and gy[1] == gy[2]: - print("SAME COORD. SET TO 0") - gn[gx[b] + 1][gy[b] + 1] = 0 - b = 99 - -# Game Functions -def check_winner(m2, m3) -> None: - # Check if the game has been won - if m2 == 0 and m3 == 0: - print("\nA DRAW\n") - return - if m3 == 0: - print("\nPLAYER 1 IS THE WINNER\n") - return - if m2 == 0: - print("\nPLAYER 2 IS THE WINNER\n") - return - -# Program Flow -def main() -> None: - display_header() - - setup_board() - display_board() - - while True: - print("\n") - simulate_board() - display_board() - check_winner() - modify_board() - -if __name__ == "__main__": - main() diff --git a/56_Life_for_Two/python/lifefortwo.py b/56_Life_for_Two/python/life_for_two.py similarity index 77% rename from 56_Life_for_Two/python/lifefortwo.py rename to 56_Life_for_Two/python/life_for_two.py index f8b3e3aa..a7ebbe5a 100644 --- a/56_Life_for_Two/python/lifefortwo.py +++ b/56_Life_for_Two/python/life_for_two.py @@ -1,7 +1,15 @@ -# Variable Initialisation +''' +LIFE FOR TWO + +Competitive Game of Life (two or more players). + +Ported by Sajid Sarker (2022). +''' + +# Global Variable Initialisation gn, gk, ga, gx, gy = [], [], [], [], [] -gk = [3, 102, 103, 120, 130, 121, 112, 111, 12, 21, 30, 1020, 1030, 1011, 1021, 1003, 1002, 1012] -ga = [-1, 0, 1, 0, 0, -1, 0, 1, -1, -1, 1, -1, -1, 1, 1, 1] +gk = [-999, 3, 102, 103, 120, 130, 121, 112, 111, 12, 21, 30, 1020, 1030, 1011, 1021, 1003, 1002, 1012] +ga = [-999, -1, 0, 1, 0, 0, -1, 0, 1, -1, -1, 1, -1, -1, 1, 1, 1] m2, m3 = 0, 0 # Initialise the board @@ -15,7 +23,7 @@ for i in range(3): gy.append(0) # Helper Functions -def tab(number) -> str: +def tab(number : int) -> str: t = "" while len(t) < number: t += " " @@ -39,7 +47,7 @@ def setup_board() -> None: def modify_board() -> None: # Players take turns to add symbols and modify the board for b in range(1, 3): - print("\n\nPLAYER {} ".format(b)) + print("PLAYER {} ".format(b)) query_player(b) if b == 99: break @@ -53,9 +61,8 @@ def simulate_board() -> None: for k in range(1, 6): if gn[j][k] > 99: b = 1 if gn[j][k] <= 999 else 10 - for o1 in range(0, 15, 2): - #print("{} {} {} {}".format(j, k, b, o1)) - gn[j + ga[o1]][k + ga[o1 + 1]] = gn[j + ga[o1]][k + ga[o1 + 1]] + b + for o1 in range(1, 16, 2): + gn[j + ga[o1] - 1][k + ga[o1 + 1] - 1] = gn[j + ga[o1] - 1][k + ga[o1 + 1] - 1] + b def display_board() -> None: # Draws the board with all symbols @@ -78,7 +85,7 @@ def display_board() -> None: gn[j][k] = 0 print(" ", end="") else: - for o1 in range(18): + for o1 in range(1, 19): if gn[j][k] == gk[o1]: break if o1 <= 18: @@ -101,9 +108,11 @@ def query_player(b) -> None: print("X,Y\nXXXXXX\n$$$$$$\n&&&&&&") x_ = input("??") y_ = input("???") - x_ = [int(num) for num in x_.split() if num.isdigit()][0] - y_ = [int(num) for num in y_.split() if num.isdigit()][0] - gx[b], gy[b] = y_, x_ + x_ = [int(num) for num in x_.split() if num.isdigit()] + y_ = [int(num) for num in y_.split() if num.isdigit()] + x_ = [0] if len(x_) == 0 else x_ + y_ = [0] if len(y_) == 0 else y_ + gx[b], gy[b] = y_[0], x_[0] if gx[b] in range(1, 6) and gy[b] in range(1, 6) and gn[gx[b]][gy[b]] == 0: break print("ILLEGAL COORDS. RETYPE") @@ -114,7 +123,7 @@ def query_player(b) -> None: b = 99 # Game Functions -def check_winner(m2, m3) -> None: +def check_winner(m2 : int, m3 : int) -> None: # Check if the game has been won if m2 == 0 and m3 == 0: print("\nA DRAW\n") @@ -129,15 +138,13 @@ def check_winner(m2, m3) -> None: # Program Flow def main() -> None: display_header() - setup_board() display_board() - while True: print("\n") simulate_board() display_board() - check_winner() + check_winner(m2, m3) modify_board() if __name__ == "__main__":