From e0c790b6b9934802c7994be84820d84c2368a40d Mon Sep 17 00:00:00 2001 From: sajidsarker Date: Tue, 28 Jun 2022 16:23:09 +0430 Subject: [PATCH] First pass of functional port with various errors. --- 55_Life/.life.bas.swp | Bin 12288 -> 0 bytes 56_Life_for_Two/.lifefortwo.bas.swp | Bin 12288 -> 0 bytes 56_Life_for_Two/javascript/.lifefortwo.js.swp | Bin 16384 -> 0 bytes 56_Life_for_Two/python/LIFE2.py | 136 ------------------ .../python/{lifefortwo.py => life_for_two.py} | 39 ++--- 5 files changed, 23 insertions(+), 152 deletions(-) delete mode 100644 55_Life/.life.bas.swp delete mode 100644 56_Life_for_Two/.lifefortwo.bas.swp delete mode 100644 56_Life_for_Two/javascript/.lifefortwo.js.swp delete mode 100644 56_Life_for_Two/python/LIFE2.py rename 56_Life_for_Two/python/{lifefortwo.py => life_for_two.py} (77%) diff --git a/55_Life/.life.bas.swp b/55_Life/.life.bas.swp deleted file mode 100644 index e905a787d5fa2194d6184b5cafad82fb02210a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O>7%Q6vtnSgi2`x0*Q|k(`^r4V#hnPUdMK_M$UTUZnRlju9NP906C38X;U>M z;o}51xWSEkB?K3wN=RHlNJw0exO1dJLPCfG7cSiR&&MWdrCxfgG?xBe&&Qj2@Auxb z6vbQKX0py&3xe=^n&|BG&er>1o}s@ZqJ!!6o$Z6^{*BqbTz%l{z3J|3e`of<^>X3E z69?A&vx6IlxAy8=(}SIBwQIL-?!9|B+poPny*WFm2f>@^&RetkF5VWfqddVrEdfj5 z;R&24UvN*_Uvw_8XP?=4_@k_)C143y0+xU!U^1HA!_pcRNi&qKeTC;Aoo1^O1+g;Hn* zdI>rQoreB7NAxpv8~Ox#2YL;Pp*r*;GzUEf-F=eiN9YUaW9T}RLVc(PJqOJ}|D7fJ z1Ns5_2Koy66xxPfh1Q`3=pyt2^ecr4EP z)NFWcFq{mT{P|bY4_MB_oY#1#;9()3xd?MHkFf{~Jh8`PS)5N;PEBDx7S!Y(OIBGF z`fPGJ&RDOKR|_}vJEL$UjXZM;OekmvOiu@GZME#P;h06;#y!TOqdkK$1ueDH9P8N`Uy}bgtORX~~RyuZ>7OJQt-qh3Gb0`hL)CwmL~WtjS%0 zTIIl?-~qjVwC2mTTy%x;9QhF9XqBtgBTFQ&v=r^O%BA0db(l9gOlA}#naBnSB*AzL zPo>8KTSns~n{>+j3Z%!RT9lXz5{N+t(=AN8ibg1Bn`(BsD1-3TY(qKN&CTAt5$4z{ z)a-I@_U68t<@$a$>8(@>cgcC#S;F2EiC^x*Q(0bcheV)mEGtbfm=W*jnr?DzQv}U| zfmqg&*``iAPOMHV2~>vyLc)}UOs`HZ2~qOXGqP3g$A_93gag!p;OHwq1mVID7rhQB zU^lo)8`KAS&xGy_;w&EbCdn}CI7@@7Ga8OI(sDdn>PT=&TL-J0V@{H7_R^$(LDE7U z>KvYUCywSZdF01=_aOR~|%L~lkW;2kG~*~ic5dlk{BE_!YiCy9njsx@T^0Ep^O z*?eeB6k@BaggBeT_@WtZjM=C+!DmziHOm^)`PCz87#rC*JV56};}|uw8MA1(4xf^2 kz}Wh5JWj4mhF7yH&|hV1@%TzyI3!LO`wbYU$!hG-|9k7G5C8xG diff --git a/56_Life_for_Two/.lifefortwo.bas.swp b/56_Life_for_Two/.lifefortwo.bas.swp deleted file mode 100644 index a40819f1e2893bdd7fbb962d8605cf8bcd162b7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 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__":