Jump to content

InfernalKeith

Members
  • Content Count

    805
  • Joined

  • Last visited

Everything posted by InfernalKeith

  1. Okay, I'm walking away from it now. This one stressed me out. Level 20.
  2. For some reason, after "BATTLE COMMENCES" in line 360 it rearranges the colons. Just change them to : : :: (one, then space, then one, then space, then two together) and it should be fine. It looks right on the screen above, but pastes back in weird.
  3. You and Buck should try the two-player version. It's playable now. Rocco and I have been having a lot of fun with it, he's actually asked to play it multiple times and has interrupted Overwatch to play. I probably wouldn't have gotten so many ideas for the AI without his help.
  4. News bulletin: AI is hard to program! I'm going to make SOME kind of working AI today if it kills me. It will probably be bad but I will have a working one-player version of the game today. Once I get that going I'll do more nuanced work to it. I've got the concepts I want down, it's just daunting turning them into code and I'm trying hard to work through that "this is tough, I quit" spot. The balance between attack (moving pawns toward the goal, looking ahead to avoid walking into blind alleys, to find paths of least resistance, etc), defense (blocking the enemy's home row) and aggressive defense (pinpointing enemies moving closer to your side and going after them) is a lot to juggle. It's hard to remember I thought this was originally gonna be an entrant in a 30-line program contest...
  5. Close enough to 600k to frustrate me out of playing for a couple days, I need to get back to programming anyway...
  6. First score over 500,000 in a while. Haven't been playing much lately as I've been working on AI for my game and getting sucked into hours of Agar.io, but I figured I'd post this one up. Classic99, keyboard control.
  7. I just realized I don't have WinRAR on my laptop and I have to leave for work, so I'm gonna cut and paste the code here and invite you to do the same. Here's the beta version, minus the AI. It's a working two-player version of the game. There is a minor scoring bug that we discovered last night that I've only seen pop up once, I will try to root it out this weekend. I'm interested in your thoughts on the interface. I like it and my son (who's not used to keyboard-based anything) found it relatively intuitive and easy to use, but I would love some feedback on it. You use the classic ESDX keys to move. You can also move diagonally with W R Z C. If you move a pawn two square, you move, hit enter, then move again. If you move once then press M to cancel, you can use the other move on a different pawn. If you move a pawn onto an enemy pawn, there is a battle until only one survives. If you move a pawn onto another of your pawns, they will merge. If their combined total is over 9, any extra points are lost. If you move a pawn across the board and onto the free zone of your color at the opposite side, you score points for that pawn. If you move backward onto your enemy's free zone behind you, that pawn is sacrificed and your opponent gets that many points. If you move onto a black blown up square with a pawn valued at 6 or higher, you sacrifice that pawn but "fill in" that space, so it can be traversed again. This move is important later in the game, because as more and more squares get blown up each round, getting from one end of the board to the other becomes much of the challenge. If you self-destruct, your enemy gets the number of points that pawn is worth. However, if you end the game with more points - even if you lose all your pawns first -- you still win. So it could be to your advantage to blow up your remaining pawns if the point difference doesn't put your opponent over. I'll write better docs this weekend as well. I'm just excited to be this far along, and still have a decent amount of memory to start on the AI. I hope to offer several different computer player strategies to choose from. Have fun and thanks for checking it out! 90 ! LAST MOD 7-8-2016 91 GOSUB 9000 92 CALL CLEAR :: RESTORE 9999 93 FOR I=48 TO 57 :: CALL CHARPAT(I,P$) :: READ L :: CALL CHAR(I,SEG$(P$,1,L*2-2)&SEG$(P$,L*2+1,10)) :: NEXT I 95 FOR X=48 TO 57 :: CALL CHARPAT(X,X$) :: CALL CHAR(X+56,X$) :: NEXT X :: CALL CHAR(128,"0101010101010101",136,"0101010101010101") 100 CALL SCREEN(12) :: CALL CHAR(37,"FF818181818181FF",97,"01010101010101FF",35,"FFFFFFFFFFFFFFFF") :: CALL COLOR(10,5,2,11,5,2,3,7,2,4,7,2) 103 CALL COLOR(13,7,1,14,5,1) 105 CALL CLEAR :: RANDOMIZE :: CALL CHAR(58,"FFFFFFFFFFFFFFFF",114,"FFFFFFFFFFFFFFFF",36,"0101010101010101") :: DIM SCORE(2),BOARD(2) 110 FOR X=1 TO 10 :: PRINT "aaaaaaaaa" :: NEXT X :: PRINT: : : : : : : : : : : : 115 CALL VCHAR(2,2,97,10) :: CALL HCHAR(12,2,58,10) :: CALL HCHAR(1,2,114,10) :: CALL VCHAR(2,1,36,10) 117 CALL HCHAR(1,1,136) :: CALL HCHAR(12,1,128) 120 TURN=1 :: SCORE(1),SCORE(2)=0 :: BOARD(1),BOARD(2)=75 :: GOSUB 10000! SET AND PLACE PAWN AMOUNTS 130 REM 140 DISPLAY AT(2,11):"PLAYER 1 PLAYER j" :: DISPLAY AT(3,11):"-------- --------" :: DISPLAY AT(4,11):"SCORE SCORE" :: DISPLAY AT(5,11):"BOARD BOARD" 150 CALL SCOREDISP(SCORE(1),SCORE(2),BOARD(1),BOARD(2)) 160 DISPLAY AT(23,1):"____________________________":"ENEMY LINES TWO PLAYER BETA!" 169 ! MAIN GAME LOOP 170 CALL DELSPRITE(ALL) :: DISPLAY AT(15,1):"":"":"" :: Y=INT(RND*10)+2 :: Z=INT(RND*10)+2 :: CALL GCHAR(Y,Z,X) :: IF X=35 THEN 170 180 IF X>48 AND X<58 THEN BOARD(1)=BOARD(1)-(X-48)ELSE IF X>104 THEN BOARD(2)=BOARD(2)-(X-104) 190 CALL BOMB :: CALL HCHAR(Y,Z,35) :: CALL PAUSE :: CALL SCOREDISP(SCORE(1),SCORE(2),BOARD(1),BOARD(2)) 195 IF BOARD(1)>0 AND BOARD(2)>0 THEN 200 197 IF BOARD(1)=0 THEN TURN=1 ELSE TURN=2 198 GOTO 1030 200 CALL DELSPRITE(ALL) :: DISPLAY AT(15,1):"YOUR TURN, PLAYER ";CHR$(49+(57*(TURN-1))) :: DISPLAY AT(16,1):"ENTER TO ROLL, R TO RESIGN": : : : 210 CALL KEY(0,K,S) :: IF S=0 THEN 210 ELSE IF K<>13 AND K<>82 THEN 210 215 IF K=82 THEN 1000 220 DICE=INT(RND*3) :: DISPLAY AT(16,1):"YOU ROLLED A ";CHR$(DICE+48+(56*(TURN-1))) 230 IF DICE=0 THEN CALL PAUSE :: GOTO 700 240 PLACEX=2+(9*(TURN-1)) :: PLACEY=2 245 DISPLAY AT(17,1)BEEP:"SELECT PAWN"; 250 CALL SELECT(PLACEX,PLACEY,TURN,Z) 260 DISPLAY AT(16,1):"MOVES LEFT ";CHR$(48+((TURN-1)*56)+DICE) :: CALL DEST(PLACEX,PLACEY,Z,DESTX,DESTY,ZZ) 263 IF ZZ=999 THEN CALL SOUND(50,110,0) :: DISPLAY AT(15,1):"" :: DISPLAY AT(18,1):"": : :: CALL DELSPRITE(#2) :: GOTO 240 264 IF ZZ=998 THEN CALL GCHAR(PLACEX,PLACEY,Z) :: Z=Z-48-(56*(TURN-1)) :: CALL BOMB :: CALL HCHAR(PLACEX,PLACEY,58) :: GOTO 320 265 DISPLAY AT(18,1):"":"":"" :: IF ZZ<>97 THEN 290 267 CALL DELSPRITE(#2) 270 CALL HCHAR(DESTX,DESTY,Z) :: CALL HCHAR(PLACEX,PLACEY,97) :: CALL SOUND(100,523,5) :: CALL SOUND(125,1047,5) 280 PLACEX=DESTX :: PLACEY=DESTY :: CALL SPRITE(#1,37,4,((PLACEX-1)*+1,((PLACEY-1)*+1) :: DICE=DICE-1 :: IF DICE=0 THEN 700 ELSE GOTO 260 290 IF ZZ=35 THEN 500 300 IF ZZ<>114 AND ZZ<>58 THEN 340 305 DISPLAY AT(15,1):"":"":"" :: Z=Z-48-(56*(TURN-1)) 310 IF(ZZ=114 AND TURN=2)OR(ZZ=58 AND TURN=1)THEN 330 320 DISPLAY AT(15,1):"PAWN HAS BEEN SACRIFICED": : : : : :: CALL SOUND(200,147,0) :: CALL SOUND(300,110,0) :: CALL HCHAR(PLACEX,PLACEY,97) 325 BOARD(TURN)=BOARD(TURN)-Z :: IF TURN=1 THEN SCORE(2)=SCORE(2)+Z ELSE SCORE(1)=SCORE(1)+Z 327 CALL SCOREDISP(SCORE(1),SCORE(2),BOARD(1),BOARD(2)) :: DICE=0 :: GOTO 700 330 DISPLAY AT(15,1):"PAWN HAS REACHED HOME" :: CALL SOUND(200,1175,0) :: CALL SOUND(300,1661,0) :: CALL HCHAR(PLACEX,PLACEY,97) 335 BOARD(TURN)=BOARD(TURN)-Z :: IF TURN=1 THEN SCORE(1)=SCORE(1)+Z ELSE SCORE(2)=SCORE(2)+Z 337 GOTO 327 340 IF(ZZ>47 AND ZZ<58)AND(Z>103 AND Z<114)OR(ZZ>103 AND ZZ<114)AND(Z>47 AND Z<58)THEN 360 350 GOTO 740 360 CALL SCREEN(7) :: DISPLAY AT(15,1):"BATTLE COMMENCES": : :: IF DICE=2 THEN DISPLAY AT(16,1):"ATTACKER ADVANTAGE!" 370 CALL SOUND(100,622,0) :: CALL SOUND(100,740,0) :: CALL SOUND(400,1245,0) :: CALL SOUND(100,740,0) :: CALL SOUND(100,622,0) :: CALL SCREEN(12) 380 TIP=50-(INT(RND*10)+1) :: IF DICE=2 THEN TIP=TIP+15 390 BDICE=INT(RND*100)+1 400 CALL SCREEN(7) :: CALL BOMB :: CALL SCREEN(12) 410 IF BDICE<TIP THEN ZZ=ZZ-1 ELSE Z=Z-1 420 ! 430 IF BDICE<TIP AND ZZ<103 THEN BOARD(1)=BOARD(1)-1 435 IF BDICE<TIP AND ZZ>58 THEN BOARD(2)=BOARD(2)-1 436 IF BDICE>TIP AND Z<103 THEN BOARD(1)=BOARD(1)-1 437 IF BDICE>TIP AND Z>58 THEN BOARD(2)=BOARD(2)-1 440 CALL SCOREDISP(SCORE(1),SCORE(2),BOARD(1),BOARD(2)) 450 IF Z=48 OR ZZ=48 OR Z=104 OR ZZ=104 THEN 470 460 CALL HCHAR(PLACEX,PLACEY,Z) :: CALL HCHAR(DESTX,DESTY,ZZ) :: GOTO 390 470 IF Z=48 OR Z=104 THEN DISPLAY AT(16,1):"ATTACKER IS DEFEATED" :: CALL HCHAR(PLACEX,PLACEY,97) :: GOTO 480 475 DISPLAY AT(16,1):"DEFENDER IS DEFEATED" :: CALL HCHAR(DESTX,DESTY,97) 480 DISPLAY AT(15,1):"THE BATTLE HAS ENDED" 490 CALL DELSPRITE(#1,#2) :: CALL PAUSE :: GOTO 700 500 ! PAWN TO FILL EMPTY SPAPCE 510 IF Z-48-(56*(TURN-1))<6 THEN CALL SOUND(100,110,0) :: GOTO 260 520 DISPLAY AT(15,1):"PAWN HAS BEEN SACRIFICED":"AND THE VOID HAS BEEN FILLED": : : : : 525 CALL SOUND(200,247,0) :: CALL SOUND(200,294,0) :: FOR X=277 TO 1760 STEP 40 :: CALL SOUND(-100,X,0) :: NEXT X 530 CALL HCHAR(PLACEX,PLACEY,97) :: CALL HCHAR(DESTX,DESTY,97) :: BOARD(TURN)=BOARD(TURN)-(Z-48-(56*(TURN-1))) 540 CALL BOMB 550 CALL SCOREDISP(SCORE(1),SCORE(2),BOARD(1),BOARD(2)) :: GOTO 700 700 IF BOARD(1)<1 OR BOARD(2)<1 THEN 720 710 IF TURN=2 THEN TURN=1 :: GOTO 170 ELSE TURN=2 :: GOTO 200 720 IF SCORE(1)>SCORE(2)THEN TEMP$="RED" ELSE IF SCORE(1)<SCORE(2)THEN TEMP$="BLUE" ELSE IF SCORE(1)=SCORE(2)THEN TEMP$="NOBODY" 730 GOTO 1040 740 XX=(Z-48-(56*(TURN-1)))+(ZZ-48-(56*(TURN-1))) 750 IF XX>9 THEN BOARD(TURN)=BOARD(TURN)-(XX-9) 760 XX=MIN(9,XX) 770 DISPLAY AT(15,1):"PAWNS HAVE MERGED INTO ONE": : : : 780 FOR Y=0 TO 20 STEP 5 :: FOR YY=1680 TO 2680 STEP 200 :: CALL SOUND(-20,YY,Y) :: NEXT YY 785 FOR YY=2680 TO 1680 STEP-200 :: CALL SOUND(-20,YY,Y) :: NEXT YY :: NEXT Y 790 CALL HCHAR(PLACEX,PLACEY,97) :: CALL HCHAR(DESTX,DESTY,XX+48+(56*(TURN-1))) 800 CALL SCOREDISP(SCORE(1),SCORE(2),BOARD(1),BOARD(2)) :: CALL DELSPRITE(ALL) :: GOTO 700 1000 DISPLAY AT(15,1):"Y CONFIRMS RESIGN":"ANY OTHER KEY CANCELS" 1010 CALL KEY(0,K,S) :: IF S=0 THEN 1010 1020 IF K<>89 THEN 200 1030 IF TURN=1 THEN TEMP$="BLUE" ELSE TEMP$="RED" 1040 DISPLAY AT(15,1):TEMP$;" WINS THE GAME":"Q QUITS, ANY OTHER KEY TO PLAY AGAIN" 1050 FOR X=1 TO 3 :: CALL SOUND(75,1319,0) :: CALL SOUND(75,1397,0) :: CALL SOUND(75,1760,0) :: NEXT X :: CALL SOUND(300,1760,0,1920,0) 1053 IF TURN=1 THEN TURN=5 ELSE TURN=7 1055 FOR X=1 TO 3 :: CALL SCREEN(TURN) :: CALL BOMB :: CALL SCREEN(12) :: NEXT X 1060 CALL KEY(0,K,S) :: IF S=0 THEN 1060 1070 IF K=81 THEN CALL CLEAR :: STOP 1080 GOTO 100 9000 CALL CLEAR 9010 PRINT "ENEMY LINES BY KEITH BERGMAN": :"(C) 2016 2 PLAYER BETA TEST!":"***** NOT FINAL VERSION*****" 9020 PRINT: : : : : : : :"PRESS ANY KEY TO CONTINUE..." 9030 CALL KEY(0,K,S) :: IF S=0 THEN 9030 9040 RETURN 9999 DATA 4,4,4,4,7,5,4,6,4,4 10000 FOR W=1 TO 2 :: AMOUNT=75 10010 Y=(INT(RND*3)+2+(7*(W-1))) :: Z=INT(RND*10)+2 :: X=INT(RND*9)+1 :: IF AMOUNT<X THEN X=AMOUNT 10025 CALL GCHAR(Y,Z,V) :: IF V<>97 THEN 10010 10030 AMOUNT=AMOUNT-X :: CALL HCHAR(Y,Z,X+48+(56*(W-1))) :: IF AMOUNT>0 THEN 10010 10040 NEXT W :: RETURN 10050 SUB SCOREDISP(SA,SB,BA,BB) 10055 IF SA<10 THEN SA$="0"&STR$(SA)ELSE SA$=STR$(SA) 10056 IF SB<10 THEN SB$="0"&STR$(SB)ELSE SB$=STR$(SB) 10057 IF BA<10 THEN BA$="0"&STR$(BA)ELSE BA$=STR$(BA) 10058 IF BB<10 THEN BB$="0"&STR$(BB)ELSE BB$=STR$(BB) 10060 CALL HCHAR(4,19,ASC(SEG$(SA$,1,1))) :: CALL HCHAR(4,20,ASC(SEG$(SA$,2,1))) 10070 CALL HCHAR(4,29,ASC(SEG$(SB$,1,1))+56) :: CALL HCHAR(4,30,ASC(SEG$(SB$,2,1))+56) 10080 CALL HCHAR(5,19,ASC(SEG$(BA$,1,1))) :: CALL HCHAR(5,20,ASC(SEG$(BA$,2,1))) 10090 CALL HCHAR(5,29,ASC(SEG$(BB$,1,1))+56) :: CALL HCHAR(5,30,ASC(SEG$(BB$,2,1))+56) 10100 SUBEND 10200 SUB PAUSE 10300 FOR X=1 TO 500 :: NEXT X 10310 SUBEND 10320 SUB BOMB 10330 CALL SOUND(400,-5,0) :: CALL SOUND(300,-6,0) :: CALL SOUND(300,-7,0) 10340 SUBEND 15000 SUB SELECT(PLACEX,PLACEY,TURN,Z) 15010 CALL SPRITE(#1,37,11,((PLACEX-1)*+1,((PLACEY-1)*+1) 15020 CALL KEY(0,K,S) :: IF S=0 THEN 15020 15030 IF K=13 THEN 15180 15040 IF K=87 THEN PLACEX=PLACEX-1 :: PLACEY=PLACEY-1 :: GOTO 15130 15050 IF K=69 THEN PLACEX=PLACEX-1 :: GOTO 15130 15060 IF K=82 THEN PLACEX=PLACEX-1 :: PLACEY=PLACEY+1 :: GOTO 15130 15070 IF K=83 THEN PLACEY=PLACEY-1 :: GOTO 15130 15080 IF K=68 THEN PLACEY=PLACEY+1 :: GOTO 15130 15090 IF K=90 THEN PLACEX=PLACEX+1 :: PLACEY=PLACEY-1 :: GOTO 15130 15100 IF K=88 THEN PLACEX=PLACEX+1 :: GOTO 15130 15110 IF K=67 THEN PLACEX=PLACEX+1 :: PLACEY=PLACEY+1 :: GOTO 15130 15120 CALL SOUND(100,110,0) :: GOTO 15020 15130 IF PLACEX<2 THEN PLACEX=11 15140 IF PLACEX>11 THEN PLACEX=2 15150 IF PLACEY<2 THEN PLACEY=11 15160 IF PLACEY>11 THEN PLACEY=2 15170 GOTO 15010 15180 CALL GCHAR(PLACEX,PLACEY,Z) 15190 IF TURN=1 AND(Z<48 OR Z>57)THEN 15120 15200 IF TURN=2 AND(Z<104 OR Z>113)THEN 15120 15210 CALL COLOR(#1,4) :: FOR X=0 TO 30 :: CALL SOUND(-100,1250,X) :: NEXT X 15220 DISPLAY AT(15,1):"":"":"" 15230 SUBEND 17000 SUB DEST(PLACEX,PLACEY,Z,DESTX,DESTY,ZZ) 17005 DESTX=PLACEX :: DESTY=PLACEY 17010 MINX=MAX(PLACEX-1,1) :: MAXX=MIN(PLACEX+1,12) :: MINY=MAX(PLACEY-1,2) :: MAXY=MIN(PLACEY+1,11) 17020 CALL SPRITE(#2,37,13,((DESTX-1)*+1,((DESTY-1)*+1) 17025 DISPLAY AT(15,1):"SELECT DESTINATION SQUARE" :: DISPLAY AT(18,1):"M TO CANCEL":"P TO SELF DESTRUCT" 17030 CALL KEY(0,K,S) :: IF S=0 THEN 17030 17035 IF K=80 THEN ZZ=998 :: GOTO 17170 17037 IF K=77 THEN ZZ=999 :: GOTO 17170 17040 IF K=87 THEN IF DESTX-1<MINX OR DESTY-1<MINY THEN 17140 ELSE DESTX=DESTX-1 :: DESTY=DESTY-1 :: GOTO 17020 17050 IF K=69 THEN IF DESTX-1<MINX THEN 17140 ELSE DESTX=DESTX-1 :: GOTO 17020 17060 IF K=82 THEN IF DESTX-1<MINX OR DESTY+1>MAXY THEN 17140 ELSE DESTX=DESTX-1 :: DESTY=DESTY+1 :: GOTO 17020 17070 IF K=83 THEN IF DESTY-1<MINY THEN 17140 ELSE DESTY=DESTY-1 :: GOTO 17020 17080 IF K=68 THEN IF DESTY+1>MAXY THEN 17140 ELSE DESTY=DESTY+1 :: GOTO 17020 17090 IF K=90 THEN IF DESTX+1>MAXX OR DESTY-1<MINY THEN 17140 ELSE DESTX=DESTX+1 :: DESTY=DESTY-1 :: GOTO 17020 17100 IF K=88 THEN IF DESTX+1>MAXX THEN 17140 ELSE DESTX=DESTX+1 :: GOTO 17020 17110 IF K=67 THEN IF DESTX+1>MAXX OR DESTY+1>MAXY THEN 17140 ELSE DESTX=DESTX+1 :: DESTY=DESTY+1 :: GOTO 17020 17120 IF K=13 THEN IF DESTX<>PLACEX OR DESTY<>PLACEY THEN 17150 17140 CALL SOUND(100,110,0) :: GOTO 17020 17150 CALL SOUND(10,220,0) 17160 CALL GCHAR(DESTX,DESTY,ZZ) 17170 SUBEND
  8. I used to have all the TImagination games on cassette. Ordered them from the author years after the fact, luckily he still had the same address as listed in his old 99'er ads. Walls and Bridges remains a fantastic BASIC game, I put up a thread on it a while back. If I recall, Psyborg's first two parts were really engrossing and then part 3 was a total letdown. Major points for ambition alone on a game that size though.
  9. This isn't a progress update, exactly, but I had to brag on it a little. My 14-year-old son and I tested out the game tonight. When I asked him to play "Dicecrash" (and when he's played most classic games) he showed a polite interest, but couldn't wait to get back to his PS4. We just played "Enemy Lines" for over an hour and he was really into it. He got really psyched up as the game went on and was coming up with suggestions for strategy that I will incorporate into the AI. His verdict is that the game is "pretty awesome." I'm feeling pretty accomplished right now.
  10. It's been ages since I participated in one of these, but Barrage is my jam. Are there any rules about how to obtain the high score (iron vs emulation, keyboard vs joystick, etc)? I can pretty consistently post up around 500,000 and I've been known to go beyond that occasionally. And I need something to keep me from playing Agario constantly and never getting any better at that stupid game... :/
  11. The numbers look great! In this shot, we're almost to the end of the game. The game is tied. If blue can get that 4 pawn to the other side, blue will win it. It's not looking good for red unless he can block with good defense and eliminate that 4. There's a statistically good chance of both those pawns being blown up before any more points can be scored, leading to a tie game. Hoping to start on the AI for the computer player tomorrow.
  12. I do too -- I have it change for battle sequences and other turn indicators, and was gonna change it at the end depending on who wins, but I may take that back out. What an awesome routine! Thank you for that, I am going to add it later today and see how it looks.
  13. Spent the day adding some niceties to the interface (the ability to cancel a move, a self-destruct when a pawn is stuck, etc.) Nothing major. Battle odds may need tweaked a bit. I love that this entire thread from six long years ago starts with a "dammit, Owen!"
  14. I like how my mind works when I've been programming a lot. I'm just a hack in BASIC but it makes me smarter and sharper somehow. I gotta quit slacking on that.

  15. Hey, it's back! Long story short -- I finished my game "Dicecrash" last year, jumped right into my Risk-like game "Conquest of the Aftermath," and quickly realized I was in over my head. Also, work got busy around that time. A while later, I was revisiting old notes and half-finished game ideas, and realized I've left a LOT of undone projects to quietly die in the forum archives. So I decided I'd revisit some of those and get them done and out into the world, with an eye toward cleaning up my to-do list in 2016 and going back to the big project in 2017. Anyway, I've been fiddling with this game for a bit now, and I have a 2-player playable beta ready. It's turned out better than I expected, and the gameplay is pretty fun. It's kind of a real bloody, kamikaze version of Stratego right now. You can see the "rank" of each pawn on both sides, and you basically have to try to get as many of yours across the board as possible while destroying your enemy when they do the same. One random square gets bombed into oblivion each round, too, which can unfairly take out a pawn and/or block access to the finish line for other pawns. My next step is to play a few rounds with someone and get more of a feel for what else the game needs, and what a good, implement-able strategy for the AI would be. Each player starts with 75 "points" on the board, divided up among their pawns. You can see from the screen above how much of the playfield gets wiped out in the course of one match, and how few of those pawns end up limping across the finish line. I foresee a lot of matches decided by a point or two. More after the weekend! Keith
  16. Flooraway is amazing, as is Walls and Bridges from TImagination (subject of its own thread a couple weeks ago). Khe Sanh is a game of maddening suspense which I also love. 99'vaders (published by Not Polyoptics) was one of the few attempts at an arcade-style game in TI BASIC that I found workable and enjoyable. As for utilities... realistically, was anything in BASIC useful enough to overcome the language's issues?
  17. Bump. Had a couple people flake out on me so I have two sets of these, and I still have the Incredible Wizard as well.
  18. I think the problem is, these items come up for sale so infrequently, there's no accurate sample size. I sold an unboxed Q*Bert for something like $70 once, because two people that week happened to both want it and decided to go toe-to-toe. Other times, you can't give things away. The buying pool is so small and the data so infrequent, you might as well throw a dart at a dartboard. Even the "set it high and sit on it" approach doesn't give you an accurate number. If you put up an auction for a rare Moonbeam Software title I don't have, and I know it's ending in a week, there's more urgency. If you put it up with a Buy It Now price of $80, I am more inclined to play 'chicken' with a number of other unseen 99'ers who have their eye on it. You also run into everyone's differing opinion of what our hobby "should" be. Even discussing high-dollar rare carts sets some people off. You have to accept that there's a degree of randomness to the whole thing, and not pin your emotions on TI cartridge prices like they're the Dow Jones industrial average. All that said.... what Owen offered, plus five bucks!!!
  19. http://www.gamesetwatch.com/2007/12/column_game_mag_weaseling_the_7.php Interesting look at the "loopy" history of 99'er Magazine, from someone not that involved in the TI community. It's an old article, so some of you may have seen it before, but I thought it provided an interesting perspective.
  20. Thanks for unearthing those! Unless my memory is failing me, I actually reviewed "War of the Netherworlds" for Micropendium back in the late 80s after ordering a copy from Mr. Donaldson. I vaguely remember enjoying it, but couldn't even tell you a thing about it now. I'm about to check it out!
  21. If it seems like I'm going on about the minutiae of the game, a lot of what I'm writing in this thread will hopefully end up as game documentation. I want to make sure everything's as well explained as possible. I hope the game's also intuitive to just sit down and play, but with as much as there is going on in this one, I want to do my best not to miss anything.
  22. After a week or so of no coding time, I got back to this today. I started implementing the turn loop, specifically the calculation of feeding your population. Each tile on the board, no matter what kind of terrain (except water), has some population, scattered there as they fled war. Through foraging and raiding the ruins of homes and stores, it's assumed they can find a minimum amount of food. The only way to obtain a larger amount is to clear tiles of land and plant them. Once a tile is planted, in the next turn cycle it will yield a surplus, and can be replanted. Planted land adjacent to water will yield even more. If your food output is more than your population needs, you have a surplus, and your people's morale goes up (this is important for battles and other factors). If it is not enough, some of your population will starve, at random locations across the map. (Population who live on food growing tiles are less affected by shortages.) As it stands now, you begin the game with just enough food resources to cover most of your population, but you'll quickly have to figure out the best division of your labor each turn between terraforming and planting, and taking over new territory. I have some holiday time off work this week, and I'm hoping to get the turn loop finished, including attack/defense routines, and then begin work on the AI. I have a feeling a lot of my formulas will have to be adjusted once the game's playable and I see how a typical match unfolds.
  23. Hadn't played in a while. Might have to get some sessions in this week while we're out of town for the holidays.
  24. Get one of our gurus to make me a killer port of "Gridrunner" and I'll think about it...
  25. I haven't spent nearly enough time with my real system lately either. I travel a bit for work and I've bowed to the reality that coding on an emulator is just way easier to fit into life. I've at least made some progress in getting my system back up and ready, but my basement 'war room' ends up being a dumping ground for stuff and it's hard to keep it organized and ready for TI time. I've got a few other systems in various states of setup down there as well, and I need to just spend a weekend cleaning it up and making it usable.
×
×
  • Create New...