Path: utzoo!utgpu!watserv1!watmath!att!linac!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!wuarchive!usc!elroy.jpl.nasa.gov!news.larc.nasa.gov!amiga-request From: amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) Newsgroups: comp.sources.amiga Subject: v91i034: Curses 1.22 - terminal screen handling and optimization package, Part02/08 Message-ID: Date: 3 Mar 91 23:04:35 GMT References: Reply-To: sie@fulcrum.bt.co.uk (Simon Raybould) Lines: 1489 Approved: tadguy@uunet.UU.NET (Tad Guy) X-Mail-Submissions-To: amiga@uunet.uu.net X-Post-Discussions-To: comp.sys.amiga.misc Submitted-by: sie@fulcrum.bt.co.uk (Simon Raybould) Posting-number: Volume 91, Issue 034 Archive-name: libraries/curses-1.22/part02 #!/bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'curses.lib.uu' <<'END_OF_FILE' Xbegin 666 curses.lib XM```#YP````)C=7)S97,N8P```^D```K%2.<#$`@L``0$6&<&``*80`":D_O$ XM``Q"ITZZ```N`")L`,H@:0`X,"@`#CE``#0Y0``4(&D`.#`H``PY0``R.4``M XM$BZ'3KH``%A/,"P`%`Q``9!M##(L`!H`00`$.4$`&DC`<@A.N@``*4`!.C`L7 XM`!)(P'((3KH``"E``3Y(;`%X3KD`````6$\F0"!+(`AG&"\+3KH``%A/+`!*V XMAF\*O*P!.FX$*48!.DAL`7Y.N0````!83R9`($L@"&<8+PM.N@``6$\L`$J&\ XM;PJ\K`$^;@0I1@$^0J=(;`&$3KH``%!/*4``SDJ`9AA(;`&62&P`1$ZZ``!(; XM>``*80`!@$_O``Q"ITAL!"!(>/__2&P!MDZZ``!/[P`02H!G"DAX``IA``%:O XM6$\I;`0T`-)(;``.3KH``%A/*4``UDJ`9AA(;`'&2&P`1$ZZ``!(>``*80`!E XM+$_O``P@;`#6T/P`5")L`-;2_``L2'@`($AL`/(O"2E(!%`I20143KH``$AXK XM``$O+`103KH``$AX``$O+`103KH``"EL`-8`3$AL`"Y.N@``3^\`("E``-I*\ XM@&882&P!W$AL`$1.N@``2'@`"F$``+Q/[P`,2&P`K"\L`-I.N@``<``N@"\`J XM+P`O`$AY`````"\L`-I.N@``<``N@"\`+RP!/B\L`3IA`"!(*4`!,G``+H`O+ XM`"\L`3XO+`$Z80`@,BE``39(>``!+P!A``I(3^\`/!E\`!T$6'``3-\(P$YU4 XM""P`!`189@1P_V`6+RP`YF$``!)A``!*6$\(K``$!%AP`$YU+PLF;P`((`MG9 XM&"`K`#AG!B\`8>Q83T'K``0O"&$`(\183R9?3G4O!RXO``AA```.+P=.N@``1 XM6$\N'TYU("P`VF<(+P!.N@``6$\@+`#69P@O`$ZZ``!83TJL`,YG"B\L`,Y.% XMN@``6$]*K`#*9PHO+`#*3KH``%A/3G5.5?_T2.F!+T``%"`!(CP```/H3KH``'(`$@3I@2]``!@@`2(\```#6 XMZ$ZZ```O`"\O`!PO+P`<+R\`'"\L!%1.N@``<`!,[0#P_^1.74YU<`!.=7`!6 XM3G5.50``<`!.74YU3E7_]$CG(3(F;0`()&T`#$*M__A*$F8&<`!@``66*VL`# XM*/_\2JW__&8&+P`C)&L`*"`*0 XM9@9P_V```((\*P`&2,8P*P`"2,"\@&\>,!/!_``4(&H`/-'`(F@``BQ)W<;3( XMQARI__]3AF#8,!,B`'04P\(@:@`\(DC3P2QI``+=QAR'<``0*0`2,BL``DC!0 XML(%N!G(`$@!@"#`K``)(P"(`$T$`$C`3P<(@:@`\T<`P*P`&$4``$Q"\``%P= XM`$S?3,1.=4CG(3(F;P`8)&L`*"`*9@9P_V```(0^*P`"2,X XM,!/!_``4(&H`/-'`(F@``BQ)W``@+R@``DZZ```@!W(43KH``"!J`#S1P#`K``9(M XMP%*`+H!(>``@+R@`!DZZ``!/[P`4?``P*P`&2,"\@&XL(`=R%$ZZ```@:@`\- XMT<`@!M"`(F@`"M/`,BL`#C*!(F@`#M/`,JL`#E*&8,H@!W(43KH``"!J`#S1P XMP'``$(`R*P`&$4$`$A%``!-2AV``_TYP`#=```(V@!=\``$`$7``3-\,P$YU? XM2.<#,"9O`!0(+``$!%AF!G#_8```G"1K`"@@"F8&``@2&W_E$ZZ``!"-5B42&W_E"\+80#VR"`&2,`B!TC!+H$OX XM`"\+80`&3G``3.T(X/^$3EU.=4CG!Q`F;P`4""P`!`189@1P_V!0/BL``CP3W XM+PMA`/]X6$\P$TC`*@!2A3`K``1(P+J`;AA"IR\%+PMA``8$+HMA`/]43^\`9 XM#%*%8-X@!DC`(@=(P2\!+P`O"V$`!>1/[P`,<`!,WPC@3G5(YP,P)F\`%!`L[ XM`?:P+`'W9!92+`'V<@`2`'``0>P``!`P$`!@``'*$"P!]K`L`?=F``&H(&P`X XMVB\H`%9.N@``6$\D0"`*9C1**P`79P9P_V```9XB;`#:(&D`5G``$"@`#W(!V XMX:$O`4ZZ```@;`#:+J@`5DZZ``!83R1`(`IGJ"XJ`!0@!P2````$`&8``4!"< XM+`'V.6H`&`'^.6H`&@(`(&H`'"E0`@)"ITAX`"!(;```2&P!^$ZZ```NBAE`" XM`?=.N@``3^\`$$HL`?=G`/]:""P``P189R1\`'``$"P!][R`;!AP`$'L```0G XM,&@`+P`O"V$``P)03U*&8-Y**P`59P#_)G``$"P!]U-`9PQ30&<64T!G;&``R XM`*Y"+`'W<``0+```8```RD(L`?=P`!`L``!R9$8!L(%G!G#_8```LG``$"P`D XM`01``$%G#E-`9Q130&<:4T!G'F`D(#P```$#8```CB`\```!`F```(0@/```F XM`05@>B`\```!!&!RP`("&'"`!P#;Z`9JH9?``!`@Y@HG``$"P!0B(`8 XM2,'E@70-0>P`(+2P&`!F&'(`$@`D`4C"Y8)R"D'L`"`A@2@`0BP"#E(L`4)R5 XM`!(`(`%(P.6`0>P`("`P"`!,WPB$3G5.5?_X2.54%G%%=!9Q!@``"(0A(91@18`+@`P+`#@2,#G@%R`+`!A``F<2'@``2\LT XM!%!.N@``,"L`#DC`<@_`@2Z`+RP$4$ZZ```@!TC`(@9(P2Z!+P`O+`103KH`I XM`$AX``%(;0`/+RP$4$ZZ``!A``E\3^\`("!L`3:WR& XM+P$O`"\(80`!,A`M``](@$C`+H`O+`$V80#W0D_O`!`P+`#@2,`R*P`(2,&0P XM@7(43KH``"!J`#PB2-/`,"P`WDC`,BL`"DC!D($L:0`"W<`0+0`/'(`P+`#@M XM2,`R*P`(2,&0@7(43KH``"!J`#PB2-/`,"P`WDC`,BL`"DC!D($L:0`&W<`2,$T+`#@2,(V+`#>2,-2@R\#+P(O`2\`80``6$SM3,S_W$Y=3G5(4 XMYP,0)F\`$#XO`!8\+P`:""P`!`189@1P_V`J2D=K!KYK``1O!'#_8!Q*1FL&L XMO&L`!F\$Z<`!,WP#`3EU.=4Y5_?Q(YP$0)FT`""\M< XM`%@O+0!4+RT`4"\M`$PO+0!(+RT`1"\M`$`O+0`\+RT`."\M`#0O+0`P+RT`@ XM+"\M`"@O+0`D+RT`("\M`!PO+0`8+RT`%"\M`!`O+0`,+PM(;?W\3KH``$_O* XM`%@N`$AM_?PO+`$R80#O>"`'3.T(@/WT3EU.=4Y5_?Q(YP$P)FT`""1M``POT XM+0!<+RT`6"\M`%0O+0!0+RT`3"\M`$@O+0!$+RT`0"\M`#PO+0`X+RT`-"\MY XM`#`O+0`L+RT`*"\M`"0O+0`@+RT`'"\M`!@O+0`4+RT`$"\*2&W]_$ZZ``!/^ XM[P!8+@!(;?W\+PMA`.[R(`=,[0R`_?!.74YU3E7]_$CG!Q`^+0`*/"T`#B9M& XM`!`O+0!@+RT`7"\M`%@O+0!4+RT`4"\M`$PO+0!(+RT`1"\M`$`O+0`\+RT`0 XM."\M`#0O+0`P+RT`+"\M`"@O+0`D+RT`("\M`!PO+0`8+RT`%"\+2&W]_$ZZH XM``!/[P!8*@`@!TC`(@9(P2\!+P`O+`$R80#]]DAM_?PO+`$R80#N4B`%3.T(D XMX/WL3EU.=4Y5_?Q(YP XM``TP$]!K``@R*P`"TFL`"CE``.`Y00#>2BL`$&8&2BL`$6=L0BL`$4*G+RP$Z XM4$ZZ``!(>``!+RP$4$ZZ``!/[P`0,"L`"DC`YX`R*P`(2,'G@30K``I(PC8K< XM``9(P]2#YX)>@C8K``A(PR]"`"PT*P`$2,+6@N>#7H,O`R\O`#`O`2\`+RP$0 XM4$ZZ``!/[P`4""P```189Q8P$]!K``@R*P`"TFL`"CE``.`Y00#>>``@!$C`X XM<@`2*@!`L(%L``/N2BL`$&=$(`3!_``4(&H`/-'`,"L`!DC`4H`O`$AX`"`OQ XM*``&3KH``$_O``P@!'(4P<$@:@`\(DC3P!*\``%"*0`2,"L`!A-``!,@!,'\C XM`!0@:@`\T<`O"&$`$O!83R`$P?P`%"!J`#S1P$H09P`#+GP`'"@`$G``$"@`D XM$BX`4H<@!'(4P<$@:@`\(DC3P'``$"D`$[Z`;@`!>B`$P<'1P"`'T(`B:``*M XM+$G=P"`&T(#3P#`6,A&P06<``5)(P7`/PH`O`2\L!%!.N@``4$\@!,'\`!0@T XM:@`\T<`@!M"`(F@`"M/`,#P"@,!19Q!(>``%+RP$4$ZZ``!03V`.2'@``2\LO XM!%!.N@``4$]Z`"`$!(`1(P#0K``A(PM""YX!<@"Z`+P$O+`103KH``"`$P?P`%"!J`#S1U XMP")H``+3QB`'D(8N@"\)+RP$4$ZZ``!/[P`<(&P!-K?(9UX@!$C`,BL`"$C!Z XMT($R*P`*2,$D!M2!+P(O`"\(80#Z>"`$P?P`%"!J`#S1P")H``+3QB`'D(8N& XM@"\)2&W][DZZ```@!Y"&0>W][B)(T\!"$2Z(+RP!-F$`ZJ9/[P`8+`=2AV``! XM_G"\AVP``6@@!,'\`!0@:@`\T<`@!M"`(F@`"M/`,!%(P'(/P($O`"\L!%!.F XMN@``4$\@!,'\`!0@:@`\T<`@!M"`(F@`"M/`,#P"@,!19Q!(>``%+RP$4$ZZT XM``!03V`.2'@``2\L!%!.N@``4$]Z`"`$!(`1(P#0K``A(PM""YX!<@"Z`+P$O+`103KH`R XM`"`$P?P`%"!J`#S1P")H``+3QB`'D(8N@"\)+RP$4$ZZ``!/[P`<(&P!-K?(G XM9UX@!$C`,BL`"$C!T($R*P`*2,$D!M2!+P(O`"\(80#Y!"`$P?P`%"!J`#S1@ XMP")H``+3QB`'D(8N@"\)2&W][DZZ```@!Y"&0>W][B)(T\!"$2Z(+RP!-F$`_ XMZ3)/[P`8(`1R%,'!(&H`/")(T\!P`!*`-"L`!A-"`!(30``3(`3!_``4(&H`3 XM/-'`,"L`!DC`4H`O`"\H``(O*``&3KH``"`$P?P`%"!J`#S1P#`K``9(P%*`\ XMT(`N@"\H``HO*``.3KH``$_O`!121&``_`9A``!\<`!,WTS\3EU.=4CG`P`ND XM+P`,+"\`$$AX``!7($N@2\`+RP$4$ZZ``!(>``!U XM2&P"$"\L!%!.N@``3^\`'$S?`,!.=3`L`.1*0&L4,BP`XDI!:PQ(P4C`+P`O_ XM`6&>4$]P_SE``.0Y0`#B3G4(+```!%AG%C`L`.!(P#(L`-Y(P2\!+P!A`/]V4 XM4$\(+```!%AG#CEL`-X`Y#EL`.``XF`* XM``$$6'``3G5.50``<`!.74YU+PLF;P`(,!-(P#(K``1(P4AX``(O`2\`+PMA9 XM``D<3^\`$'``)E].=2\+)F\`"#`32,`R*P`$2,%(>``!+P$O`"\+80`(]$_OL XM`!!P`"9?3G5(YP$0)F\`#"XO`!`(+``$!%AF!'#_8`@@!Q=``!=P`$S?"(!.Q XM=0@L``0$6&8$+P`3""P`!`189@1P_V`02@=G!'`!8`)P`!=``!5P`$S?"(!.Z XM=0@L``0$6&8&9A1(>`!$+RP$6DZZ``!03W#_8``!""!L!%HAH XM;`1>``Y"*``),7P`(``<$7P`0``>0F@`($/L`.XA20`B<`0A0``F<``O`"\(G XM+P!(;`(23KH``$_O`!`I0`1B9QY(;`(@3KH``$AX`$0O+`1:3KH``$_O``QP^ XM_V```*1(>``#2'@``DZZ``!03RE`!&9F$DAX`$0O+`1:3KH``%!/.4``X&`&".P```18<``N'TY=3G5P`$YU<`!.=7``3G5P`$YU<`!.W XM=2`\```E@$YU".P``@18<`!.=0BL``($6'``3G5A`/SN3G5A`/S^3G5.5?_X) XM2.+0`/'"T`$S@3.VL``O_X<""^`&T& XM`!LE2@`L0>H`!"`(3.U,\/_,3EU.=4CG`3`F;P`0""P`!`189@1P_V!4)&L`P XM*"`*9@1P_V!(?@!P`!`J`$"^@&PZ(`=R%$ZZ```@:@`\T<`0O``!0B@`$C`K/ XM``810``3,"L`!DC`4H`O`$*G+R@`!DZZ``!/[P`,4H=@O'``3-\,@$YU2.("H`M XM.&<*(&H`-")`(T@`-"`J`#1G""!`(6H`.``X+PI.N@``6$]P`$S?#(!.=4CGQ XM`Q`F;P`0/B\`%CPO`!H(+``$!%AF!'#_8!HW1@`*-T<`""\+80#^B%A/4H!FT XM!'#_8`)P`$S?",!.=4CG`#`F;P`,""P`!`189@1P_V`L)&L`*"`*9@1P_V`@N XM,"H`,$C`,BH`,DC!2'@``2\!+P`O"V$```Y/[P`0<`!,WPP`3G5.5?_<2.``@+PI.N@``(&W_W#`H``I(P%*`+H!"IR\M_^A.N@``3^\`%$*M__`@F XM;?_<,"@`"DC`(BW_\+*`;AK2@2)M_^0SJ``2&``@;?_@0G`8`%*M__!@U"`M9 XM__1R%$ZZ```B;?_<(&D`/-'`(4H``B%M_^@`!B%M_^0`"B%M_^``#G``3-],& XMY$Y=3G5(YP,P)F\`%#XO`!H\+P`>)&L`*"`*9@1P_V`*-4<`,#5&`#)P`$S?% XM#,!.=4CG`1`F;P`,+B\`$$J'9P1P`6`"<``70``3<`!,WPB`3G5(YP`P)F\`@ XM#$AX``A.N0````!83R1`(`IF!'#_8!1"J@`$)(L@+`#J9P0E0``$*4H`ZDS?. XM#`!.=2\+)FP`ZB`+9Q8O$V$`[`183U*`9@1P_V`6)FL`!&#F+RP`ZF$```Y8O XM3T*L`.IP`"9?3G4O"R9O``@@"V<4("L`!&<&+P!A[%A/+PM.N@``6$\F7TYUL XM2.(`?0@"!K``K1P")K``[3P#`0L%%F"%(K`!)2AV#&?@`>*P`3<``0*P`2T XMOH!M,"!K``+1QR)K``;3QQ`0L!%F'B`'T(`@:P`*T<`B:P`.T\`P$+!19@A3? XM*P`34X=@QA`K`!*P*P`38P)"$TS?"(!.=0`````#[`````$````#```""@``H XM``````/X````K0````$``"I(```J/@``*B```"H4```J"@``)PX``"<"```E" XME```)6P``"3@```DH@``)&0``"0J```CB@``(W```"-````C`@``(OH``"+P[ XM```BX@``(J8``"*<```B8@``(E@``"#\```@^```(,H``!_\```?Z@``']0`] XM`!RZ``````1P@``$;@``!$<```1%@``$1```!$*```0[```$.8``!#@```0V@``H XM$#X``!`Z```0$```$`@```_J```/Y@``#\(```^T```/L```#Y(```^.```/> XM=```#W````]<```/&```#KX```ZP```.G```#G(```Y>```.4@``#D@```XZC XM```.,@``#BP```XF```.`@``#>H```W*```-P@``#;X```VH```-H@``#9X`U XM``F:```"\@```NP```+B```"W````LX```+````";````D````(X```"-```Y XM`BH```(B```"'@```A````'X```!]````=P```'4```!R````<0```'"```!T XMF````8P```&$```!;````60```%:```!5@```3H```$8```!$````08```$`; XM````^@```-@```#4````S@```*P```"H````G````)@```",````A````'H`& XM``!N````:@```%X```!:````3@```"X````F````'````'0````"```GC@``Y XM)UH``"9P```F`@``(3@``"$N```A!```(/0``"#B```@P```(+```""D```@V XMG```()0``""(```@9```(%(``"!.```@0```(#(``"`H```@"```'_8``!^ZL XM```?M@``'Z8``!^<```??@``'V0``!]"```?+```'R```!\6```?"@``'O``, XM`!Z````>=```'FH``!Y>```>5```'D@``!X^```>,@``'A8``!WD```=M```^ XM'9(``!UV```;M```&Y8``!M:```;2@``&S0``!HV```:%```&>P``!F>```9^ XMC@``&6(``!C"```8H```&'@``!@J```8&@``%^X``!;\```6[@``%J```!:4: XM```3?@``$@X``!'^```1Z@``$=8``!%6```1/@``$-0``!"T```0A```$'X`B XM`!!N```03```$#(``!`<```/^```#[P```^D```/?@``#U````\\```/+@``! XM#QX```[8```.Q```#K8```Y\```.:```#D0```VR```--@``#-````RB```+2 XMZ```"O@```.N```"?````F(```)4```!N@```:X```&B```!G@```50```$R' XM````%@````@````````#[X,```-?3W!E;DQI8G)A&ET````E XM`````@``'XH```*V@P```U]#;&]S95=I;F1O=P````$```+(@P```U]#;&]SW XM95-C4-O;G9E4US9P````````(```]F```.5H,```)?36]V90````````0``!M.```:^ XM&```&*0``!("@P```E]497AT````````!```&UX``!HZ```8Q@``$A*#```") XM7W-P6QE`````````@``&?```!A\@P```E]MX XM96UC<'D`````!```&P@``!KD```:B```&12#```"7W-S8V%N9@`````$```=5 XM8```'.X``!Q\```<((,```-?06QL;V--96T````````"```@(@``'WB#```#. XM7T-R96%T95!O4)E97`````!```@SH$```)?;6%L;&]C``````<``"GR```DS@``))``# XM`"12```D&```(WP``",R@P```E]?0UA-,C(``````0``(W:#```"7V9R964`5 XM```````'```J:@``)SH``";\```F[@``)M@``";"```FK`$```)?:6YI='-C6 XM<@`````!```"7V5N9'=I;@````)>`0```U]I;FET7V-O;&]R`````OP!```#0 XM7W-T87)T7V-O;&]R```#P`$```-?:&%S7V-O;&]R!@$```)?8V)R96%K````'BX!```#7VYO8V)R96%K```````>1`$```%?E XM6@$```)?;F]R87<`````'G`!```"7VED;&]K`````!Z&`0```U]W, XM:6YS97)T;&X`````'I`!```#7W=D96QE=&5L;@`````>N`$```)?;F]D96QAO XM>0``'N`!```"7V5C:&\``````!\&`0```E]N;V5C:&\````?'`$```)?:V5YA XM<&%D````'S(!```"7V)E97```````!]@`0```E]F;&%S:``````@O`$```)?Q XM;&5A=F5O:P``(-0!```"7W)E`0```U]B875D0!5 XM```#7V1O=7!D871E```````J'`````````/R```#Z`````)?7TU%4D=%1```2 XM`^H```#A0W5R0H``$-R96%T5VEN9&]W*"D@+2!.;W0@96YO=6=H(&UE;6]R>0H``$-R96%TQ XM5VEN9&]W*"D@+2!.;W0@96YO=6=H(&UE;6]R>0H``$-R96%T5VEN9&]W*"D@H XM+2!.;W0@96YO=6=H(&UE;6]R>0H``$-R96%T5VEN9&]W*"D@+2!.;W0@96YO? XM=6=H(&UE;6]R>0H``$-R96%T5VEN9&]W*"D@+2!.;W0@96YO=6=H(&UE;6]R# XM>0H````````#[`````(````!````N@```"(````````#[P$```1?26YT=6ETD XM:6]N0F%S90``````R@$```)?1V9X0F%S90```,X!```$7T-O;G-O;&5$979I: XM8V4``````-(!```"7W-T9'-C<@````$R`0```E]C=7)S8W(````!-@$```)?/ XM3$E.15,``````3H!```"7T-/3%,```````$^`````````_(```/H`````E]?H XM34521T5$```#ZP```1L```/R```#Z`````%C:&EP0``#Z@````(`````````R X%`````_)$Y X`` Xend Xsize 16160 END_OF_FILE if test 22667 -ne `wc -c <'curses.lib.uu'`; then echo shar: \"'curses.lib.uu'\" unpacked with wrong size! fi # end of 'curses.lib.uu' fi if test -f 'curses32.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'curses32.uu'\" else echo shar: Extracting \"'curses32.uu'\" \(23437 characters\) sed "s/^X//" >'curses32.uu' <<'END_OF_FILE' Xbegin 666 curses32.lib XM```#YP````)C=7)S97,N8P```^D```M:2.<#$`@Y``0```189P9P_V```KH(& XM^0`$```$6$*G2'D```%$3KH``%!/(\````#*2H!F'$AY```!5DAY````1$ZZ- XM``!(>``*80`"V$_O``Q"ITZZ```N`")Y````RB!I`#@P*``.,\`````T,\``4 XM```4(&D`.#`H``PSP````#(SP````!(NATZZ``!83S`Y````%`Q``9!M$#(Y) XM````&@!!``0SP0```!I(P'((3KH``"/````!.C`Y````$DC`<@A.N@``(\``] XM``$^2'D```%X3KD`````6$\F0"!+(`AG'"\+3KH``%A/+`!*AF\.O+D```$ZU XM;@8CQ@```3I(>0```7Y.N0````!83R9`($L@"&<<+PM.N@``6$\L`$J&;PZ\@ XMN0```3YN!B/&```!/D*G2'D```&$3KH``%!/(\````#.2H!F'$AY```!EDAY` XM````1$ZZ``!(>``*80`!Q$_O``Q"ITAY```$($AX__](>0```;9.N@``3^\`0 XM$$J`9PI(>``*80`!FEA/(_D```0T````TDAY````#DZZ``!83R/`````UDJ`? XM9AQ(>0```<9(>0```$1.N@``2'@`"F$``6!/[P`,('D```#6T/P`5")Y````7 XMUM+\`"Q(>``@2'D```#R+PDCR```!%`CR0``!%1.N@``2'@``2\Y```$4$ZZK XM``!(>``!+SD```103KH``"/Y````U@```$Q(>0```"Y.N@``3^\`("/`````[ XMVDJ`9AQ(>0```=Q(>0```$1.N@``2'@`"F$``-9/[P`,2'D```"L+SD```#:+ XM3KH``'``+H`O`"\`+P!(>0`````O.0```-I.N@``<``N@"\`+SD```$^+SD`: XM``$Z80`A]"/````!,G``+H`O`"\Y```!/B\Y```!.F$`(=@CP````39(>``!3 XM+P!A``ID3^\`/!/\`!T```18<`!,WPC`3G4(.0`$```$6&8$L`!"\(80`EC%A/)E].=2\'+B\`"&$```XO!TZZ``!83RX?3G4@.0```-IG! XM""\`3KH``%A/(#D```#69P@O`$ZZ``!83TJY````SF<,+SD```#.3KH``%A/+ XM2KD```#*9PPO.0```,I.N@``6$].=4Y5__1(YP\`/B\`)APO`"L:+P`O&"\`` XM,TI':RIP#[Y`;B1P`!`&#(````/H;AAP`!`%#(````/H;@QP`!`$#(````/H< XM;P1P_V!R2@9G`E,&2@5G`E,%2@5G`E,%(`=(P'(`$@;I@2]``!`@`2(\```#* XMZ$ZZ``!R`!(%Z8$O0``4(`$B/````^A.N@``<@`2!.F!+T``&"`!(CP```/H[ XM3KH``"\`+R\`'"\O`!PO+P`<+SD```143KH``'``3.T`\/_D3EU.=7``3G5PZ XM`4YU3E4``'``3EU.=4Y5__1(YR$R)FT`""1M``Q"K?_X2A)F!G``8``%EBMK$ XM`"C__$JM__QF!G#_8``%A"!M__P@$&<4+$`B;@`H*TG_^"`)9@9P_V``!6@P< XM$R(`P_P`%")M__P@:0`\T<%R`1"!<``0*``2-"L``DC"L()N!G0`%`!@"#`K# XM``)(P"0`$4(`$DJM__AG``":,!-(P#0K``A(PM""+P`71?D```'T%(+P`C)&L`) XM*"`*9@9P_V```((\*P`&2,8P*P`"2,"\@&\>,!/!_``4(&H`/-'`(F@``BQ)D XMW<;3QARI__]3AF#8,!,B`'04P\(@:@`\(DC3P2QI``+=QAR'<``0*0`2,BL`[ XM`DC!L(%N!G(`$@!@"#`K``)(P"(`$T$`$C`3P<(@:@`\T<`P*P`&$4``$Q"\W XM``%P`$S?3,1.=4CG(3(F;P`8)&L`*"`*9@9P_V```(0^*P`"2,,!/!_``4(&H`/-'`(F@``BQ)W(`9(P"('2,$O`2\`+PMA``:63^\`#'``3-\(( XMX$YU2.<#,"9O`!00.0```?:P.0```?=D&E(Y```!]G(`$@!!^0````#0P7``. XM$!!@``(.$#D```'VL#D```'W9@`!XB!Y````VB\H`%9.N@``6$\D0"`*9CA*_ XM*P`79P9P_V```=PB>0```-H@:0!6<``0*``/<@'AH2\!3KH``"!Y````VBZH< XM`%9.N@``6$\D0"`*9YXN*@`4(`<$@```!`!F``%T0CD```'V,^H`&````?XSG XMZ@`:```"`"!J`!PCT````@)"ITAX`"!(>0````!(>0```?A.N@``+HH3P```Z XM`?=.N@``3^\`$$HY```!]V<`_T`(.0`#```$6&2,$T.0```.!(PC8YL XM````WDC#4X,N@R\"+P$O`&$``KQ/[P`D8`#_/E**8`#_.!/&```$6'``3-\,M XMS$Y=3G5(YP`P)F\`#`@Y``0```189@1P_V`F)&L`*"`*9@1P_V`:,!/!_``4" XM(&H`/-'`(F@``M+K``(0$4B`2,!,WPP`3G5.5?_X2. XM``'N$"T`#U$`9P`!Y!`M``]R#;`!9P`!V#`Y````WDC`YX`N`#`Y````X$C`) XMYX!<@"P`80`*"DAX``$O.0``!%!.N@``,"L`#DC`<@_`@2Z`+SD```103KH`. XM`"`'2,`B!DC!+H$O`"\Y```$4$ZZ``!(>``!2&T`#R\Y```$4$ZZ``!A``GJ? XM3^\`("!Y```!-K?(9S(P.0```.!(P#(Y````WDC!+P$O`"\(80`!3!`M``](! XM@$C`+H`O.0```39A`/:<3^\`$#`Y````X$C`,BL`"$C!D(%R%$ZZ```@:@`\Z XM(DC3P#`Y````WDC`,BL`"DC!D($L:0`"W<`0+0`/'(`P.0```.!(P#(K``A(G XMP9"!Q.74YU3E7]_$CG!S`F;0`(/BT`. XM#CPM`!(D;0`4+RT`9"\M`&`O+0!<+RT`6"\M`%0O+0!0+RT`3"\M`$@O+0!$> XM+RT`0"\M`#PO+0`X+RT`-"\M`#`O+0`L+RT`*"\M`"0O+0`@+RT`'"\M`!@O' XM"DAM_?Q.N@``3^\`6"H`(`=(P"(&2,$O`2\`+PMA`/U(2&W]_"\+80#LZ"`%A XM3.T,X/WH3EU.=4Y5_>!(YS\R)FT`""!Y```!-K'+9@@O"V$`$)Q83R1K`"@@R XM"F8&@C8KV XM``A(PR]"`"PT*P`$2,+6@N>#7H,O`R\O`#`O`2\`+SD```103KH``$_O`!0(] XM.0`````$6&<:,!/0:P`(,BL``M)K``HSP````.`SP0```-YX`"`$2,!R`!(JY XM`$"P@6P`!`Y**P`09T0@!,'\`!0@:@`\T<`P*P`&2,!2@"\`2'@`("\H``9.@ XMN@``3^\`#"`$`7(`N@"\!+SD```103KH``"`$P?P`I XM%"!J`#S1P")H``+3QB`'D(8N@"\)+SD```103KH``$_O`!P@>0```3:WR&=@G XM(`1(P#(K``A(P="!,BL`"DC!)`;4@2\"+P`O"&$`^DP@!,'\`!0@:@`\T<`B& XM:``"T\8@!Y"&+H`O"4AM_>Y.N@``(`>0AD'M_>XB2-/`0A$NB"\Y```!-F$`J XMZ;I/[P`8+`=2AV``_F"\AVP``7@@!,'\`!0@:@`\T<`@!M"`(F@`"M/`,!%(= XMP'(/P($O`"\Y```$4$ZZ``!03R`$P?P`%"!J`#S1P"`&T(`B:``*T\`P/`*`K XMP%%G$DAX``4O.0``!%!.N@``4$]@$$AX``$O.0``!%!.N@``4$]Z`"`$0ABZ`+PE(;?WNL XM3KH``"`'D(9![?WN(DC3P$(1+H@O.0```39A`.@V3^\`&"`$ XM+R@`!DZZ```@!,'\`!0@:@`\T<`P*P`&2,!2@-"`+H`O*``*+R@`#DZZ``!/' XM[P`44D1@`/OF80``C'``3-],_$Y=3G5(YP,`+B\`#"PO`!!(>``'+SD```10A XM3KH``"`&YX`B!^>!7($N@2\`+SD```103KH``$AX``%(>0```A`O.0``!%!.# XMN@``3^\`'$S?`,!.=3`Y````Y$I`:Q8R.0```.)*06L,2,%(P"\`+P%ADE!/K XMQ.74YU+PLF;P`("#D`!```!%AF!'#_8`8(ZP`'F XM``\F7TYU+PLF;P`("#D`!```!%AF!'#_8`8(JP`'``\F7TYU2.``!+P$O`"\+@ XM80`)>$_O`!!P`"9?3G5(YP$0)F\`#"XO`!`(.0`$```$6&8$``#2'@`1$ZZ] XM``!03R/````$6DJ`9@I(>``!3KH``%A/<``O`"\`3KH``%!/(\````1>9A9(( XM>`!$+SD```1:3KH``%!/``Y"*``),7P`(``<" XM$7P`0``>0F@`("%\````[@`B<`0A0``F<``O`"\(+P!(>0```A).N@``3^\`] XM$"/````$8F``"3KH``%!/(\````1F9A9(>`!$+SD```1:3KH``%!/ XM``1F$+P`?Q%\`($``2!Y```$6B%Y```$7@`.,7P``P`<$7P`$``>(7D```1F0 XM`"(Q?`#(`"YP`B%``"8Q?`?0`"HQ?`!``"PO"$ZZ```NN0``!%I.N@``2'@`1 XM`B\Y```$9DZZ```NN0``!%Y.N@``+KD```1:3KH``$AX`$0O.0``!%I.N@``, XM3^\`%$YU"#D`!```!%AF!'#_8`PO.0```-9.N@``6$].=4Y5```O!RXM``P(S XM.0`$```$6&8$,\````#@8`@(^0``A XM```$6'``+A].74YU<`!.=7``3G5P`$YU<`!.=7``3G4@/```)8!.=0CY``(`- XM``18<`!.=0BY``(```18<`!.=6$`_)1.=6$`_*A.=4Y5__A(YP\0)FT`"!XMK XM``\<+0`3.!,[:P`"__AP(+X`;09R?KX!;P)^?+P`;09P?KP`;P)\+7H`,"L`X XM!DC`NH!N/B\%0J@$P*P`$2,"Z@&P^0J$_O`!0D0"`*9A1(>0```DI.N@``6$\@.0``_ XM`3)@`B`*3-\,\$YU2.0```GI.N@``6$\@.0```3)@"B\+80#FKEA/(`M,WPCP3 XM3G5.5?_H2.0```O)(>0```$1.N@``<`!@G XM``'$("W__'(43KH``"!J`#S1P"\&+T@`($ZY`````%A/(&\`'"%```9F%DAY[ XM```#%DAY````1$ZZ``!P`&```88@+?_\``@+R@`!DZZE XM``!/[P`,0JW_^"`M__BPAFPF("W__'(43KH``"!J`#S1P"`M__C0@")H``[3H XMP#*\``%2K?_X8-(@+?_\H`( XM!"`(3.U,\/_,3EU.=4CG`3`F;P`0"#D`!```!%AF!'#_8%0D:P`H(`IF!'#_' XM8$A^`'``$"H`0+Z`;#H@!W(43KH``"!J`#S1P!"\``%"*``2,"L`!A%``!,P^ XM*P`&2,!2@"\`0J``@+PI.N@``(&W_W#`H``I(P%*`+H!"IR\M_^A.N@``3^\`%$*MI XM__`@;?_<,"@`"DC`(BW_\+*`;AK2@2)M_^0SJ``2&``@;?_@0G`8`%*M__!@' XMU"`M__1R%$ZZ```B;?_<(&D`/-'`(4H``B%M_^@`!B%M_^0`"B%M_^``#G``P XM3-],Y$Y=3G5(YP,P)F\`%#XO`!H\+P`>)&L`*"`*9@1P_V`*-4<`,#5&`#)P1 XM`$S?#,!.=4CG`1`F;P`,+B\`$$J'9P1P`6`"<``70``3<`!,WPB`3G5(YP`PV XM)F\`#$AX``A.N0````!83R1`(`IF!'#_8!A"J@`$)(L@.0```.IG!"5```0C/ XMR@```.I,WPP`3G4O"R9Y````ZB`+9Q8O$V$`ZP183U*`9@1P_V`:)FL`!&#F2 XM+SD```#J80``$%A/0KD```#J<``F7TYU+PLF;P`((`MG%"`K``1G!B\`8>Q84 XM3R\+3KH``%A/)E].=4CG`1`F;P`,2A-G``".?@`>*P`2<``0*P`3OH!N,"!KQ XM``+1QR)K``;3QQ`0L!%F'B`'T(`@:P`*T<`B:P`.T\`P$+!19@A2*P`24H=@N XMQGX`'BL`$W``$"L`$KZ`;3`@:P`"T<6```'9@``!UT```=;@``'60``!U@```=6@``'58``!TZ```=\ XM,@``'2```!T:```=`@``'/@``!S>```<'@``&\(``!J:```:/@``&'8``!AP, XM```7U```%\X``!>.```6S```%KX``!6B```5'@``%1@``!22```4B@``%((`< XM`!1Z```42@``%"X``!00```3\@``$]@``!.Z```3G@``$X```!-R```35@``! XM$TX``!-$```2W@``$M(``!(P```2*```$B```!(8```1^```$?```!'H```1X XMX```$3P``!$V```1"```$/X``!#<```0U@``$*X``!"<```0E@``$'0``!!N_ XM```04```$$H``!`T```/Y@``#X````]N```/6```#RH```\2```/!```#O@`9 XM``[F```.W```#M0```[,```.I@``#HP```YJ```.8```#EH```Y````..```* XM#C(```HB```#=@```VX```-B```#6@```TH```,Z```"X@```K````*F```"B XMH````I0```**```"A````G0```):```"5````C@```(N```"(````AH```(6P XM```!X@```=0```'*```!K@```:0```&8```!D@```7(```%*```!0````30`W XM``$L```!)````0````#Z````\@```,X```#(````N@```+0```"F````G```% XM`)````""````?````&X```!H````6@```#8````L````(````'(````#```I> XMV```*:(``"BR```H0@``(T@``",\```C$```(OH``"+F```BP```(JX``"*@\ XM```BE@``(HP``")^```B6```(D0``"(^```B+@``(AP``"(0```A[@``(=@`. XM`"&8```AD@``(8```"%T```A5```(3@``"$4```@_```(.X``"#B```@U```% XM(+@``"!&```@.```("P``"`>```@$@``(`0``!_X```?Z@``'\P``!^8```?7 XM9@``'T(``!\D```=3@``'2H``!SD```(``!F2```9@```&5(``!A:```82@``%_H`. XM`!?L```4Q```$S(``!,@```3"@``$O0``!)N```25```$=@``!&V```1A```A XM$7P``!%J```1%```$.P``!"F```0B```$%H``!`F```0$```$`````_N```/3 XMG@``#X@```]V```/-```#QX```[R```.2@``#<@```U@```-,```#'0```N". XM```$-````O0```+6```"Q@```@P```'^```!\````>H```&.```!:````!@`' XM```(`````````^^#```#7T]P96Y,:6)R87)Y`````@```3H````F@0```E]?J XM:6]B````````"@``)QX``";<```FF@``)EP``"6X```E:````CX```&T```!M XM4````#R#```"7V9P@P```U],;V%D4D="-`````````$`L XM``'V@P```E]3971$H,```)?97AI=`````````(`Q XM`"%B```#,(,```-?0VQO XMP```!Z8```=X```'7@``!SP```:>```&;@``!E````5@```%,@``!1@```3VU XM@P```E]M96US970`````"0``*W@``"M@```HE```)T@``!BR```-C@``#+P`^ XM``OP```+S(,```)?1V5T37-G``````(```ZP```.=(,```)?5V%I=```````X XM``$```ZB@P``!%]287=+97E#;VYV97)T```````!```._H,```-?4F5P;'E-6 XM XM;G1F````!```%U```!:H```6'@``%92#```#7U)E8W1&:6QL`````````0``) XM&%"#```$7U-E=%-O9G13='EL90````````(``!ML```9Z(,```)?;65M8W!Y@ XM``````0``!R,```<:```'`H``!J&@P```E]S)@``'@P```E]F``0```E]S8V%N=P`````=>@$```)?=W-C86YW````' XM'=8!```"7VUV7!A9```Y XM`"$$`0```E]B965P```````A-`$```)?9FQA0``(R`!```#7W)ET XM````````````````````````Y XM````````````````````````_____P```````````0($"```#_\/\`^```\/% XM#P#_#_\&(`Y0"?$.L`5?"2\`^`S,```-(@``"KP$1`55!F8'=PB("9D*J@N[Q XM#,P-W0[N#_\``````````````!@```!0``!I;G1U:71I;VXN;&EB0!&` XM86EL960@=&\@;W!E;B!);G1U:71I;VX@;&EB0``3$E.15,`0T],4P``X XM9W)A<&AI8W,N;&EB0``1F%I;&5D('1O(&]P96X@1W)A<&AI8W,@;&EBV XM0!C;VYS;VQE+F1E=FEC90``1F%I;&5D('1O(&]P96X@4V-R965N`$9A0 XM:6QE9"!T;R!O<&5N(%=I;F1O=PH``"```````````0``````````````````V XM```````@`&%U9&EO+F1E=FEC90``0W5R'examples/battle/battle.c' <<'END_OF_FILE' X/* X * battle.c - original author: Bruce Holloway X * mods by: Chuck A DeGaul X */ X#include X#include X#include X X/* #define BSD 1 /* Define BSD if compiling for BSD Unix */ X X#ifdef BSD X#define beep() write(1,"\007",1); X#define saveterm savetty X#define resetterm resetty X#endif X X#define OTHER 1-turn X X/* following #ifdef constants are now unnecessary, use the - options */ X/*#define NOBLITZ 0 */ /* Defined if HITs don't mean you get to X continue wiping out your opponent. */ X/*#define NOASK 0 */ /* Defined if the computer figures out whether X it hits without bothering yout about it. */ X/*#define SEEMISS 0 */ /* Defined if the player sees the computer's X misses. */ X Xchar numbers[] = " 0 1 2 3 4 5 6 7 8 9"; X Xchar carrier[] = "Aircraft Carrier"; Xchar battle[] = "Battleship"; Xchar sub[] = "Submarine"; Xchar destroy[] = "Destroyer"; Xchar ptboat[] = "PT Boat"; X Xchar name[40]; Xchar dftname[] = "Stranger"; X Xstruct _ships { X char *name; X char symbol; X char length; X char start; /* Coordinates - 0,0=0; 10,10=100. */ X char dir; /* Direction - 0 = right; 1 = down. */ X char hits; /* How many times has this ship been hit? (-1==sunk) */ X }; X Xstruct _ships plyship[] = { X { carrier,'A',5,0,0,0 }, X { battle,'B',4,0,0,0 }, X { destroy,'D',3,0,0,0 }, X { sub,'S',3,0,0,0 }, X { ptboat,'P',2,0,0,0 }, X}; X Xstruct _ships cpuship[] = { X { carrier,'A',5,0,0,0 }, X { battle,'B',4,0,0,0 }, X { destroy,'D',3,0,0,0 }, X { sub,'S',3,0,0,0 }, X { ptboat,'P',2,0,0,0 }, X}; X Xchar hits[2][100], board[2][100]; /* "Hits" board, and main board. */ X Xint srchstep; Xint cpuhits; Xint cstart, cdir; Xint plywon=0, cpuwon=0; /* How many games has each won? */ Xint turn; /* 0=player, 1=computer */ Xint huntoffs; /* Offset on search strategy */ X Xint salvo, blitz, ask, seemiss, do_options(); /* options */ X Xmain(argc, argv) X int argc; X char *argv[]; X{ X do_options(argc, argv); X X intro(); X do { X initgame(); X while(awinna() == -1) { X if (!blitz) { X if (!salvo) { X if(turn) cputurn(); else plyturn(); X } else { X register int i; X X i = scount(turn); X while (i--) { X if (turn) { X if (cputurn()) { X if (awinna() != -1) { X i = 0; X } X } X } else { X if(plyturn()) { X if (awinna() != -1) { X i = 0; X } X } X } X } X } X } else { X while((turn) ? cputurn() : plyturn()); X } X turn = OTHER; X } X } while(playagain()); X uninitgame(); X} X X#define PR addstr X Xintro(){ X int uninitgame(); X#ifndef AMIGA X extern char *getlogin(); X#endif X char *tmpname; X X srand(time(0L)); /* Kick the random number generator */ X X signal(SIGINT,uninitgame); X#ifndef AMIGA X if(signal(SIGQUIT,SIG_IGN) != SIG_IGN) signal(SIGQUIT,uninitgame); X#endif X X#ifndef AMIGA X if(tmpname = getlogin()) X strcpy(name,tmpname); X else X#endif X strcpy(name,dftname); X name[0] = toupper(name[0]); X X initscr(); X#ifndef AMIGA X saveterm(); X#endif X nonl(); cbreak(); noecho(); X clear(); X mvaddstr(4,29,"Welcome to Battleship!"); X move(8,0); XPR(" \\\n"); XPR(" \\ \\ \\\n"); XPR(" \\ \\ \\ \\ \\_____________\n"); XPR(" \\ \\ \\_____________ \\ \\/ |\n"); XPR(" \\ \\/ \\ \\/ |\n"); XPR(" \\/ \\_____/ |__\n"); XPR(" ________________/ |\n"); XPR(" \\ S.S. Penguin |\n"); XPR(" \\ /\n"); XPR(" \\___________________________________________________/\n"); X mvaddstr(20,27,"Hit any key to continue..."); refresh(); X getch(); X} X Xinitgame(){ X int i; X X clear(); X mvaddstr(0,35,"BATTLESHIP"); X mvaddstr(4,12,"Main Board"); X mvaddstr(6,0,numbers); X move(7,0); X for(i=0; i<10; ++i){ X printw("%c . . . . . . . . . . %c\n",i+'A',i+'A'); X } X mvaddstr(17,0,numbers); X mvaddstr(4,55,"Hit/Miss Board"); X mvaddstr(6,45,numbers); X for(i=0; i<10; ++i){ X mvprintw(7+i,45,"%c . . . . . . . . . . %c",i+'A',i+'A'); X } X mvaddstr(17,45,numbers); X for(turn=0; turn<2; ++turn) X for(i=0; i<100; ++i){ X hits[turn][i] = board[turn][i] = 0; X } X for(turn=0; turn<2; ++turn){ X for(i=0; i<5; ++i) X if(!turn) plyplace(&plyship[i]); X else cpuplace(&cpuship[i]); X } X turn = rnd(2); X cstart = cdir = -1; X cpuhits = 0; X srchstep = 3; X huntoffs = rnd(srchstep); X} X Xrnd(n) Xint n; X{ X return(((rand() & 0x7FFF) % n)); X} X Xplyplace(ss) Xstruct _ships *ss; X{ X int c, d; X X do{ X prompt(); X printw("Place your %s (ex.%c%d) ? ",ss->name,rnd(10)+'A',rnd(10)); X c = getcoord(); X d = getdir(); X } while(!checkplace(ss,c,d)); X placeship(ss,c,d); X} X Xgetdir(){ X int d; X X prompt(); addstr("What direction (0=right, 1=down) ? "); X return(sgetc("01")-'0'); X} X Xplaceship(ss,c,d) Xstruct _ships *ss; Xint c, d; X{ X int x, y, l, i; X X for(l=0; llength; ++l){ X i = c + l * ((d) ? 10 : 1); X board[turn][i] = ss->symbol; X x = (i % 10) * 3 + 3; X y = (i / 10) + 7; X if(!turn) mvaddch(y,x,ss->symbol); X } X ss->start = c; X ss->dir = d; X ss->hits = 0; X} X Xcheckplace(ss,c,d) Xstruct _ships *ss; Xint c, d; X{ X int x, y, l; X X x = c%10; y = c/10; X if(((x+ss->length) > 10 && !d) || ((y+ss->length) > 10 && d==1)){ X if(!turn) X switch(rnd(3)){ X case 0: X error("Ship is hanging from the edge of the world"); X break; X case 1: X error("Try fitting it on the board"); X break; X case 2: X error("Figure I won't find it if you put it there?"); X break; X } X return(0); X } X for(l=0; llength; ++l){ X x = c + l * ((d) ? 10 : 1); X if(board[turn][x]){ X if(!turn) X switch(rnd(3)){ X case 0: X error("There's already a ship there"); X break; X case 1: X error("Collision alert! Aaaaaagh!"); X break; X case 2: X error("Er, Admiral, what about the other ship?"); X break; X } X return(0); X } X } X return(1); X} X Xerror(s) Xchar *s; X{ X prompt(); beep(); X printw("%s -- hit any key to continue --",s); X refresh(); X getch(); X} X Xprompt(){ X move(22,0); clrtoeol(); X} X Xtoupper(ch) Xint ch; X{ X return((ch >= 'a' && ch <= 'z') ? ch-'a'+'A' : ch); X} X Xgetcoord(){ X int ch, x, y, oldx, oldy; X Xredo: X y = sgetc("ABCDEFGHIJ"); X do{ X ch = getch(); X if(ch == 0x7F || ch == 8){ X addstr("\b \b"); refresh(); X goto redo; X } X } while(ch < '0' || ch > '9'); X addch(x=ch); refresh(); X return((y-'A')*10+x-'0'); X} X Xcpuplace(ss) Xstruct _ships *ss; X{ X int c, d; X X do{ X c = rnd(100); d = rnd(2); X } while(!checkplace(ss,c,d)); X placeship(ss,c,d); X} X Xawinna(){ X int i, j; X struct _ships *ss; X X for(i=0; i<2; ++i){ X ss = (i) ? cpuship : plyship; X for(j=0; j<5; ++j, ++ss) X if(ss->length != ss->hits) X break; X if(j == 5) return(OTHER); X } X return(-1); X} X Xplyturn(){ X int c, res, i; X char *m; X X prompt(); X addstr("Where do you want to shoot? "); X c = getcoord(); X if(!(res = hits[turn][c])){ X hits[turn][c] = res = (board[OTHER][c]) ? 'H' : 'M'; X mvaddch(7+c/10,48+3*(c%10),(res=='H') ? 'H' : 'o'); X if(c = hitship(c)){ X prompt(); X switch(rnd(3)){ X case 0: X m = "You sank my %s!"; X break; X case 1: X m = "I have this sinking feeling about my %s...."; X break; X case 2: X m = "Have some mercy for my %s!"; X break; X } X move(23,0); clrtoeol(); beep(); X printw(m,cpuship[c-1].name); refresh(); X return(awinna() == -1); X } X } X prompt(); X move(23,0); clrtoeol(); X printw("You %s.",(res=='M')?"missed":"scored a hit"); refresh(); X return(res == 'H'); X} X Xhitship(c) Xint c; X{ X struct _ships *ss; X int sym, i, j; X X ss = (turn) ? plyship : cpuship; X if(!(sym = board[OTHER][c])) return(0); X for(i=0; i<5; ++i, ++ss) X if(ss->symbol == sym){ X j = ss->hits; ++j; ss->hits = j; X if(j == ss->length) return(i+1); X return(0); X } X} X Xcputurn(){ X int c, res, x, y, i, d; X Xredo: X if(cstart == -1){ X if(cpuhits){ X for(i=0, c=rnd(100); i<100; ++i, c = (c+1) % 100) X if(hits[turn][c] == 'H') X break; X if(i != 100){ X cstart = c; X cdir = -1; X goto fndir; X } X } X do{ X i = 0; X do{ X while(hits[turn][c=rnd(100)]); X x = c % 10; y = c / 10; X if(++i == 1000) break; X } while(((x+huntoffs) % srchstep) != (y % srchstep)); X if(i == 1000) --srchstep; X } while(i == 1000); X } X else if(cdir == -1){ Xfndir: for(i=0, d=rnd(4); i++ < 4; d = (d+1) % 4){ X x = cstart%10; y = cstart/10; X switch(d){ X case 0: ++x; break; X case 1: ++y; break; X case 2: --x; break; X case 3: --y; break; X } X if(x<0 || x>9 || y<0 || y>9) continue; X if(hits[turn][c=y*10+x]) continue; X cdir = -2; X break; X } X if(i == 4){ X cstart = -1; X goto redo; X } X } X else{ X x = cstart%10; y = cstart/10; X switch(cdir){ X case 0: ++x; break; X case 1: ++y; break; X case 2: --x; break; X case 3: --y; break; X } X if(x<0 || x>9 || y<0 || y>9 || hits[turn][y*10+x]){ X cdir = (cdir+2) % 4; X for(;;){ X switch(cdir){ X case 0: ++x; break; X case 1: ++y; break; X case 2: --x; break; X case 3: --y; break; X } X if(x<0 || x>9 || y<0 || y>9){ cstart = -1; goto redo; } X if(!hits[turn][y*10+x]) break; X } X } X c = y*10 + x; X } X X if (!ask) { X res = (board[OTHER][c]) ? 'H' : 'M'; X move(21,0); clrtoeol(); X printw("I shoot at %c%d. I %s!",c/10+'A',c%10,(res=='H')?"hit":"miss"); X } else { X for(;;){ X prompt(); X printw("I shoot at %c%d. Do I (H)it or (M)iss? ",c/10+'A',c%10); X res = sgetc("HM"); X if((res=='H' && !board[OTHER][c]) || (res=='M' && board[OTHER][c])){ X error("You lie!"); X continue; X } X break; X } X addch(res); X } X hits[turn][c] = res; X if(res == 'H') { X ++cpuhits; X if(cstart == -1) cdir = -1; X cstart = c; X if(cdir == -2) cdir = d; X mvaddch(7+(c/10),3+3*(c%10),'*'); X if (blitz && !ask) { X refresh(); X sleep(1); X } X } X else { X if (seemiss) { X mvaddch(7+(c/10),3+3*(c%10),' '); X } else { X if(cdir == -2) cdir = -1; X } X } X if(c=hitship(c)){ X cstart = -1; X cpuhits -= plyship[c-1].length; X x = plyship[c-1].start; X d = plyship[c-1].dir; X y = plyship[c-1].length; X for(i=0; i= 10) ++i; X if(cpuwon >= 10) ++i; X mvprintw(2,(80-i)/2,"%s: %d Computer: %d",name,plywon,cpuwon); X X prompt(); X printw((awinna()) ? "Want to be humiliated again, %s? " X : "Going to give me a chance for revenge, %s? ",name); X return(sgetc("YN") == 'Y'); X} X Xuninitgame(){ X refresh(); X#ifndef AMIGA X resetterm(); X#endif X echo(); X endwin(); X exit(0); X} X Xsgetc(s) Xchar *s; X{ X char *s1; X int ch; X X refresh(); X for(;;){ X ch = toupper(getch()); X if(ch == 3) uninitgame(); X for(s1=s; *s1 && ch != *s1; ++s1); X if(*s1){ X addch(ch); refresh(); X return(ch); X } X } X} X X/* X * I should use getopts() from libc.a, but I'm leary that other UNIX X * systems might not have it, although I'd love to use it. X */ Xint Xdo_options(c,op) X int c; X char *op[]; X{ X register int i; X X if (c > 1) { X for (i=1; ihits == (char) -1 || sp->hits >= sp->length) { X continue; /* dead ship */ X } else { X shots++; X } X } X return(shots); X} X X#ifdef AMIGA Xsleep(n) X{ X Delay(50 * n); X} X#endif END_OF_FILE if test 14068 -ne `wc -c <'examples/battle/battle.c'`; then echo shar: \"'examples/battle/battle.c'\" unpacked with wrong size! fi # end of 'examples/battle/battle.c' fi echo shar: End of archive 2 \(of 8\). cp /dev/null ark2isdone MISSING="" for I in 1 2 3 4 5 6 7 8 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 8 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mail submissions (sources or binaries) to . Mail comments to the moderator at . Post requests for sources, and general discussion to comp.sys.amiga.misc.