12.07.2015 Aufrufe

Programm des Monats - Raimond Reichert

Programm des Monats - Raimond Reichert

Programm des Monats - Raimond Reichert

MEHR ANZEIGEN
WENIGER ANZEIGEN
  • Keine Tags gefunden...

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

#"*$.JJJ_


06., xoqloo]'tetdsr.unz aepl arp lu,ttuels ruql uo1 rueqce;dssnu IueC uelapuos-eq unäg l3ruec punelc uoulätu qf,I elqJotu elle]s Jsselp uv'uase-I pun opnl'ellapour8ng 1e8e5' ualords.rar,ne 1y s,(q-qoH eurau puts .lelndruo3 ulap JoUnV 'uleznT uo^ et{gN repur uaures sunrseuur,(g sop essul1 OI olp ul rP,^Az pun 'elnqrsorp ur rlll eqa8 'ez1ts .ralndruo3 ue epere8 tqrtu qrl uuel6'UeZlnU nZ,,:eLreCud5,,r..n3 8un;etuuerSor4 uauäIluet;ol{elqo .rep o8nzron etpIBrrruro 'ileqltouo se qct pu€J 'uepla,^A lEa,treq ullqcspllB uep:aqn etlelqg aqcsrge.l8 lerdg uaserp ur eg '1erd5 selslo ulsul'..:e.r,rered5,, pu8lsluo ueurrue:3or6 uoJoulel{ uaSr ure qceS'§'§ luJssd oqrnl reuluos uelzlel ul uuep JluI qcl eunq osrqrru uoräruu,u:Bo.r4 s,p pun relndu,o3 rep qrl.., ,":äifäJreS 'etlolpp puBH etp ur (g'g qcou sleruup) Ie)sed oqJnl rltulep 'puneJc ueurs qolnp uerqef le,{\z punJ Jo^ qJl ue4;elnd-uoJ rep )te1& Jlp ut SetlsurE rueuleu nZ :uoqJta1 puoultuäsleuouu sap rauulmee laolSunpuasutg arql JnE sun uans{ rl,\A I'ueuuod ur 3ue1 eteuohlrorp lqrelq Sunpuasuig orql 'qcnrpeEqe XOB1OOI räpur pun usruruld NC 000I lltu uäpJem arurue;8ordre8et5arq 'raEerssqJa,l'\aqua^(\ ueule .}L4A Ulelllturs I?uON uApaf Iiueäclqcs ?äre^\Jetsle,\l eue8te rnu aulq osly 'tqr8ra8ry uaqcsrlst;nI ueutel s.lttuep 'ules JJlltJC uolt{coguoa. 'ier; uassntu 'ua{Jtqrs sun uu älS alp 'aururu-l?or6 1'ueq)Iez 99 al;nu uepezuuerSold Jep e8uul etporrq ers uazuer8ag 'ue1äJqrsraq4 1I{3Iu uellaz 0O0l ell[ossuuurSor4 sap aEuul elp :eue{slg Jnu eulq spocecJnos I'lsqJes eIS uaIuulllssq ululJälepuäsula uäc'tsr Srtou se a8uulos 'aepltrrtueJSoJd JeJqI uB ols uellaqrv I'aqcurdsrettuurzrSor4 sqorlllequlä eulsä qJnE'ro^lq3ru rr,r\ ueqlelqJs ,,3{ra eqrsllBuIaql,, 31,u,lrllseqleut.g I-rartuuurSor6 Jerql {Jei[ ats8gJgd sup sun 3IS ue{JIqJS:1t31 qJe^\oqlra16-Eurtstl-doJ ueräsun uB oIS ueulqeN Jiua8uFq 3un11ag rnz eepJ arql uafio^l rlÄlanullaA4uap qilnpal{tqtsuautalg§'§ lD)§Ddoq"tn1 lltu $au"aq il4ry)128puotutDN§fVN01,1ü S30gNlr§I]'dor


§pielerei mi| Flag-Obieklen$nacGWar§von Rain.rond <strong>Reichert</strong>Oft erliegen auch die cnrcthaftesten <strong>Programm</strong>ierer der Faszination von Objekten, die über einenSpiellrullen-Bildschit'nt.flir:.en. (*d dann kommt auch schon einmal der Wnsch auf, selbst einmalein schnelles "Ballersytiel" zu entwickeln. Warum nicht in Titrbo Pascal mit obiektorientierter Progratntnienmg?ei der Uberlegung. n ie es zu bewerkstelligen ist, unabhängigeObjcktc rvie eigene und "außerirdische" Raketcn überden Bildschirm sausen zu iassen. ergab sich eine gute Gelegenheit.die N{ö-elichkcitcn der OOF unter Turbo Pascal 5.5 zunutzen. Der Vorteil bei der Verwendung von Objekten gegenüberdem Auirvancl rnit Datenarrays tür diJRaketen und dle §chüssewu rde schnci I ol'l'crrhar'.Was am Ende stehen sollte, war ein einfaches Spiel. Mehreret-eindliche Raketen ber.r,egen sich in einem zuftilligem Zickzack-Kurs und feuern dabei auch ab und zu in unregelmäßigen Abstäntlcn.Gleichzeitig bcwegt sich tlcr Spieler. rit i.ttr u"r,t *irAbeschossen. Punkte gibt es, wenn eine "aullerildjsche" Raketcgetrclflen wird. Die eigene Rakcte geht verloren. wenn ein Gegnertril'fi. Wie viele Raketen noch zur Verfügung stehen, wird amunteren Bi ldsch irnrrand angezcigt.Bei dcr Verrvrrklichunc dci' Spielidee rnüssen u ir zunächst auferentuclle Aullö.Lrnr.lroh['nre ntit unrerschiedlichen Cralikkartenerngehen. Da Borland r.nit den Bcl{reibern clie gängigstenKarten \:ersorst. ist ciie Erkennut't-s und Einstellung <strong>des</strong> verwendctcnVideoadaptcrs r r'rhiilirrirnraßig einlhch. Um das Listingkurz zu halten. haben r.vir auf die Berechnung der Ausgabetexteüber "GetMarX" und "Cer\lax\'" otler die Zentrielung<strong>des</strong> Titels verzichtet. Zur Anpassuns nttissen Sie lediglich dieKonstanten der Ränder sowie die Prozeclnr "Status" ändern.Wenn llrnen die Raketen der "Invaders" zu groß sind. ändern Siecinfae h die Prozctlur "Rocketlmagc". Fall. Sie tlas Rurrmse hill<strong>des</strong> Spielers. seine Schüsse oder die der Rakeren veränclern wollen,können Sie das in den Konstruktoren <strong>des</strong> jerr eiligen Objektstun. Sind die Ber,regungen irgendeines Objeirs zu -rchncll. sokann auch dies über über die Variablen "DitX' beziehunssweise-Diry" <strong>des</strong> bctrollcncrr Objekts gesteuerr werclen.Das Spiel hat drei verschiedene Bilder. Das erste isr das Tirelbild.das nur einmal gezeigt wird und in kürzester Form Spielerklärungengibt, das nächste ist das Spielbild, das dritte zeigt dieerreichten Punkte an und fragt, ob noch ein Spiel gewünschtll ir"d. Ein klcincr Hinweis für glückliche Besitzel eines schnellerenRechners: Je größer die Konstante *HOCR" arn Anfang <strong>des</strong>Programn-is gerr'ählt r,,'ird, <strong>des</strong>to langsamer fliegcn die feindlichenRaketcn. J.,.ro .;hnclicr aber ruch der eigene "Space-Jet".Überhaupt kann die Geschu rncligkeit <strong>des</strong> Spieis über-"HOCR"und "DifX" beziehungsrreise "DifY" der verschiedenen ObjekteSesteuert werdcn.Das Spiel vcrwcndet r icl rer..hie,lene Objekte. Das erste irtOneShot als Elternobiekt fihr alle nachtbleenden. "X" und ''Y"sind die Instanzvariabien fiil'ciie monrentine Position <strong>des</strong> Schusses."Bottom", "Left". ''Right" unci "Top" sind die Bewegungsgrenzeltür einen Schuß. Da sich ein Schu1] aber intmer nach untenbewegt, ist nur "Bottom" wichtig. Wird "Bottom" überschritten-wird die Variable "Visible" EALSE, Dcr Schull istalso nicht mehr sichtbar und wird <strong>des</strong>halb auc-h nicht mehr fortbeuegt.In "Im" (Image) vom Typ "ImageRec" wird das Bild einesSchusses gespeichert, das in dem Constructor "Init" auf derzweiten Bildschirmseite sezeichnet wird. "Di1Y" schliclllichgibt an, um wie viele Puikte ein Schuß jeweils nach unten bewegtwird; hjer ist die Geschwindigkeit der Raketenschü:se steuerbar.Und zuletzlnoch "xl" und "yl": Sie übergeben die x- undy-Ausdehnung <strong>des</strong> Bil<strong>des</strong> an den Constructor und dje Methodenron OneShot.lnit: "Tanken" vor dem start"Init" wird gebraucht, um clas Objekt dynamisch zur Laufieitauf dem Heap anzulcgen. Nach der Compiiation ist statisch nurder Speicher für den Zeiger auf das Objekt reserviert. Erst zurLaufzeit wird der Speicher für das Objekt belegt. Dic erwcitertcSyntax von "New" seit der Version 5.5 von Turbo Pascal läßt alszweiten Paramcter den Namen eines Constructors zu. hicr also"Init". Es u,ird also der Speicher belegt und "Init" aufgerufbn.Natürlich kii6n1. der Belehl in "OneRocket.lnit" stattller.(Snor.- :'..r.lr : auchNe,^' (shotsli t ) ; Shots Ii]t "Init;heißen, aber das erste Verfahren ist bequemer.Bei der Initialisierung zeichnet der Constructor "Init" cJas Bili1eines Schusses und setzt die Instanzvariablen von OneShot. DieMethode "SetStartPos" (nx,ny : INTEGER) setzt einen Schußin seine Startposition an "nx". "ny". Von dort aus wird sich clerObjekte, lnstanzen, Methoden


ftBr^üüfrtr'^"W/ a6ernqcq grrt ' 092 t{cellsod ' 6eua1'Alrtl0/ /.rr)ll"r=.8 olp als uozlnuoq aulE r.ounlcedta^punouodv\o -'gpuelsnvsepinl mzqno^-'?.pYglll sep]nlllMuauqcalaq6unlqelduestardoqcrlpurqro^un"urrb-roärj''"i"rrr"röa{'ä[lqezuy]äpüor'or6üpqqriünre6eueyl ole/üUos luoplsoH 'rrivr uelqeldure Puessed nzeP* -'66 tluo '0', ^3)u3d^H,,qc,us^opuMuoso,c,,,.aN1 »-e,qcss.uas,,gäru3ffifrjJft63,:äfr!§i,iiffiätäi:iTij,äädl]"'lis6utlunsuouunl sep 6unzlnN alo ee slq I- JOoEuPl,uJnlElseI rop -0'?^f)u3d^H'ualalul1do ua6unpuarnuV Je,tql JallEEunua;pag elp qäsllerualsÄs lluep pun uaqcnsiua:iced -'ua;äluös'ureqcledsilü-üäriäxrähiuatatdsi-e''uarolllpe leqeuoltuor uebull?lesar qi bu ni tetset I I H I e^llls {aslxalu or- Il tl -Y -"L' 9)'uiüer6or6 uräu1e u| ueoun6e;e8-sbunpue^ uverql sllE elS ualell6elul^1»AJd^HlltN'uePJeM lgede6ue slxerd laJqlueEunteotoluv uopulesqca/v\ elp ue lepolm rotuLll!urruer6oi6 ruepeI u1 ua6u nOeleg-euepunlao letu uleüessn tu ürepn7 : uäta lq slueura6eueulLlYl:-'l-- sopualleiiqcttDgh ueqcstuqcel olle lqc!u uepltl?:J'ldsnü uäüLli üäqiorrr repo uauuol auLuer0orcuaP.Y^".^'vöualso^6unbapquelsel qlercq 6unpualtuv außw uuotA pun1'\lsu'lapleqcslelun slqcor-IllHS pun qu!l-IllHSueqc6;Äi q'cne lavu:d^H Pp'uoq?f !Ylgllarnz'uelotrdulquoruelser 0og nz slq ueu-t{l laqo'vliueEeteq''puh' uessedue Elqqleq qcsllbu3. punqcsrnäo'ul IV slq cd uo^ uadÄ1rnp1se1 elle punüilntetse1:;-rurl elle als uauugr llvtt^l»azd^H'lzlnua6lr.lslu ltv rapo -lulc lllHS llur uoururesnz^Y?]::+,uonü a ü o-r. re ü tq tir oy le p o? t-r p u n r t-l tr q?-l P- 9^1y ?! P "-uluüroola leil ;eq uoprom llo 'uoupronz -lt4e111lerut ersBtlaute lleuuese6 pun ulapunq uouolllunlää;,!;il äÄ .i üä'^ ;riess"ciren q'cri1uäsem stu uer 6-orädounoüännuv sepel Ounuelpag alp ueuu-o) als' 21undelequelsel euto uew lt'lcnuq nzoMJe6eueru-rnlelsEl loGrru ruceue6lsq;as llalqcllpunoJllauolpagigllqäS uälzlel uep üa6unpuet'luy ualql als uaqoo


Wettbewerbprogralrm aus aufgerufen wird. "InitGame" belegt den Spei-.n*i für alle Rakeän. Der Methode "Move" kommt hier äine;;*riii.'I-l ',ri.l.,tig... Bedeutung zu als in "OneShot". Bei derVerschiehung um "DifX" und ''DifY" Punkte prüfi sie zunächst.ob di'e Rakete irgencleine Grenze überschritten hat: Istsie zu * eit iinks. taucht sie am rechten Rand auf- wili sie den unterenRai-rJ überschreiten, erscheint das Raketenbildchen oben.Die \lcth.,.'c rchtet daraul. daß auch clie Richtung zur rechtenZeit ge* e;h:eir rvird und immer mal wieder ein Schuß fä1lt. Sieprüfiauch. ob das Objekt mit dem Spieler kollidiert ist oder obsie von ernem schulJ <strong>des</strong> Spielers g"troff"n wurde. Dann wirddie Anzahl der Leben vermindert oder die Rakete vom Bildschirmgeliischt.Ballern mit Methode"OnePiShot". das Obiekt eines Spielerschusses, ist schnell erklärt.E,s erbt a1le Variablen und Methoden von "OneShot" undimplementiert zwei der drei Methoden neu: "Init", weil dieSpie1.'rschusse anders aussehen als die der feindlichen Raketen'sölr,ie "\iol.e" " weil der Schuß in die anderen Richtung verläuftund sot.l.tit eine andere Grenze beiücksichtigen muß. Der Spielerbeziehung-su'eise sein Objekt "PlayObj" ist den vorausgegangenensehr innticn. was es neu definiert, ist unwesentlich. Es erbt,wie auch "OneRocket", Methoden und Instanzen von OneShot.Neu ist, daß "DifrCons" und "DifyCons" benötigt werden, dacler Welt von 'DifX" und "DifY" hier variieren kann. "Init"wurde geändert (Speicherbelegung der Spielerschüsse vom Typ1: (*2t i.*SPACEWAR,PAS3, i' :r 1990 R,<strong>Reichert</strong> & ToOLBox,l: (*5: P1OGR;-]1 S:::ei:a:i6l8:0:4'- |411,i5 r46:41 |4B:49 150:51:53:54.,55:56157:58:59:60 r61:621CONSTNrRocke--s = 6;I Anzahl geqneriecher RaketenHoCR = li 1 zYkLuE filr RaketenMaxshots = 5;{ Mäx. Anz. SchljE6e der Rak'CDCons = 150;{ Fi.ir zu:altswert der RichtungEänderungCDMin = 30;{ Mj-nd' Anz, Be,eg vor Richtung6änderungNSCons = 10;i rüt zufulL"rert für zeit bi6 neuEchiepenNSMin = 5;{Bspace = 30;Lspace = 5;Rspace = 5;lslace = 10;!3space = 30;lls?ace = 5;:-:.S!äce = 5;= I lO:: s!ta: = 20)Frilhe6tens a1le NSMin-Elnheiten 6chiepenLeerraum untenLeerraun link6Leerraum rechteLeerraum obenDa66elbe filr den SPieIer...Leerraum unLenLeerraun f.ink6Leerraun rechtsLeerraum obenMax. schü66e für splelerarr:.:9e: und Freigeben von BildechirnauE6chnitten'= tnaLtRnS:ZE: INTEGERi-rg : POINTERl:il '{ objekttyp eines schu66e6{ x- und Y-Pos.itionenOneRocketlop : INTEGER; t Sichlbare Grenzen: ImaqeRec; { Da6 Bild: INTiGERir aerschiebung um DifY-Punkte: BOOLEAN; { Sichtbar ?: lNTEGER;i:- trnd Y Ausdehnung dee Bil<strong>des</strong>:::iS,:-.i:-::::r--;{ Initialioiert;:.:,^a:'-:.r se:S-,d.--?o6(nx, ny : INTEGER) iSE::-, aäs i. Schupbild an nx, nY und,'t:t:-a = _,r:e/ x = nx/ y = nyEND,. aeae;', S.::ß un DifY Punkte nach.. r:--e: , ;e:: IiowOf ten = 0 , teStet,r aa 3a:_,a: :ite:scirillen wurde undI .e_,:_- ;e.e::s?recneno Visible"OnePlShot"). ebenso "Move". da es die Schüsse bewegen*;ß. ri; ü.iüode "ReadKeyBoard ' ist frir die Auswertung derTastatureinsaben verantwor;lich. Gesteuert werclen kann überäää;.;;ääla-tär.rr rrräem iat tenblock' allerdings stehenhier dem Spieier noch mehr Richtungen zur Verfügung'diagonai, über -, '"a*fi.f, "r.f,üii wird'das Spielerobjekt angehalten, bis irgendeineni.nt,lng.rurte gedrücki wird. Geschosien wird mit < Space > 'mit < Esc > rvird beendet.lm Cockpit: Das HauPt<strong>Programm</strong>Das Hauptprogramm selbst ist nach soichen Voranstrengungen"ntrp.".ü"irA e"infach. "InitGame" belegt den Speicher tür särrti;i;äöüi"k",nJ t l.ttäät spi"tuiia. Dann durchläuft clasnäerÄi uNrIJ -schreire Dieä;;;ö;;;;;ä;;ö;d"äuße're isinur für die Abüage, ob ein weiteres Spiel gewünschtist. Die innere ist weitaus interessanter: Sie ruft mit Hilfe einerilöfl§.;i;'f" ii; il;il.:Mou." aller Rakete-n auf, die wiederumbewegen alle ihre Schüsse weiter und prüfen auf Treffbr'Falls eine Räkete nicht mehr sichtbar sein sollte'--wirdjlolTieine neue ins Weltall geschossen. dah-er die IF-THEN-ELSE-Konstruktion. Fal1s ein i;rt.;il;k oätri.gt, wird "Player'Reac1-Keyboard" aufgerufen, das diesen auswertet und.darauf mit ein"iRi"htungsä-nderung, mit einem Schull oder überhauptnichtreagiert. Dlese innerä Schleife wird beendet. wenn ".Q-'il'TRÜE ist. Das ist der Fall, wenn entweder (Esc> gedrücktwurde oder der Spieler kein Leben mehr hat.(wr)63:64,65:66:6'7 ,68:69:10,71:'7 21'7 3114i'15,16,'/B,'19 |BO:81:82183:B4:86:8',7 i88:89:90:91r92193:95 r96197 19B:99:100:101 :102,103:104 r105:106:701 |108:109:110 :112 |114:116r117:l.1B:119:120 |127 |723 |Howoften, { zur Ceschw Regul ieruno lDifx,{ Verschiebung auf x-Achse lNewShot : INTEGER; { Neuer schup ? )inot" : ÄRRAY [1..Maxshotg] oE "oneshot;{ Atle schi.l66e einer Rakete lCONSTRUCTOR INiT;PROCEDURE Move;{ Bewegt, auch alle Schü66e/ Prüfti auf üntergrenze und Richlung6-{ änderung, 'schieBt"DESTRUCTOR Done;{ Filr speicherfrelqabe der schü6seEND;oneplshot = OBJECT(Oneshot) { Ein Spieler6chupCONSTRUCTOR Init;PROCEDURE Move;{ bewegt nach obeo, Prüft auf Grenzeplaverob.i=OBJECT(Ooeshot){SpielerobjektDifx, Difxcon6, DifYCons : lNTEGER;{ VerEchiebungench : CHAR; { für TastaturabfrageVARAl I Rocket 6i,GraphMode,Grapnur rverPIShotsPx1, PY1,Px2, PY2QuitPOant6AgainchCONSTRUCTOR INit;PROCEDURE ReadKeybot d;{ wer--et Tastatureingaben aucPROCEDURE MOVE;DESTRUCTOR DONE;{ Für Spejcherfrej-gabe der Schfi66eARRAY [1..NrRocket5] OFlNTEGER;BOOLEAN iI NTEGE R;lNTEGER;BOOLEAN;CHAR;OF ^OnePlShot;A11e schi.l6se de6 SPielersPo6ition de6 sPieLersSpieI fertj.genz. leben f. SPieLPunkt 6tand(.i* "uanSt' einen rechteckagen BildechirnauBschnitt inPROCEDURE Catchlmage (x1 /VARBEGIN-Lmqvar.Size := Tmagesfze(x1, Y1, x2,GeiMeml lmgvar. Tmg, Tmgvar. sizel icetrmage(;1, Yl, x2, Y2, Imgvar'rmg- );E ND;y2: lNTEGER;: InageRec ) ;


NIEgAINVSTOOS i paTITYluaca,rNr : tpro 'xpro 'T 'IuvAlaAoI{' 1a{coUauo ilnOeJOUdlqNs, (uT ) aEPuIla)tcou, (4TuI 'IT]s1oqs)aeNoo Elol{sxPn o[ T =l T uoJl(Buof,SN)uopuBg 1 ufHSN =. lotlsAaNa9 =: xlrq l€ =: IlToaf,{ + acedsü + o =: do,alfx - acBdsu - xxelllae =: 1q6TulecEdS'I+o=: lIoTllr( - acEdsa - ixtHlae =: uollog,(suo3q3)uopupu + uTr.lc3 =r rTos6uBl{c=: I,( lZZ =t Ix ,UJoll =r ua4JOAol{NI9SSlugegf,,Nr : TuvAJ lTuI' 1a)tcouauO uO,ISnuJ,sNO3,(lnaroX'.6uI'uI'IITO+,1'x)a6EuI1ndl(lndrox '"6uI'uI ',( 'x)a6eulxnd gslsSSTVJ =:nenLdoü,>AüIATqTETAl(IlTq']()cao:9t€I EüEI ttE: ErgI ztt: ITE:0?€:6€EI8E€I LEE:9€g:9€€: ?€€r€€€I z€EIlE€;09€I 6ZE| 8Z€I LZe| 9Ze| 9ZEI tz€.,qNA IEZEI zzE:rz€I ozE:6T€rSTt:II€NIEgg :9T€,aAoI.I'Xor{STdauo SUnOSJOUd rgIE: üT€loNg : €T€I (o)abPaa^t4cv1asl(ur 'eTT '211 'LoI '8oI)e6EurqclEf,l(€T,ZIT'ZTI)TexTdlnd,(€T'zTIrSoI)IexTalndI ( ar' orr' IrT ) rax'Fd1na I ( €1' orT' 60r ) laxTalnilI ( aT' ETr' 0rr ) IaxTallnil a ( EI' Trr' rlT ) T"xTalnd,(ar'1rr'6oT)TaxTalnd l(6T'oT1'oTr)r"xTalnilr ( aT,6or,orT ) rexrdlnd ,,.1 iBIl;i9l ll:il:il:,(I)e6rde^T1cv1eSlqsTVJ =r e1qlsTAlTÄ+ecedsJ, + 0 =: doJ, l? =: TÄ l€ =: Tx lÄ =r ÄITGI zlE: 11€: OT€:60€:80€: r0E:90€:90e: t0€I €0€I Z0€. Nr9es : T0€l?,TuI'loqsIdauo uOtf,nuJSNOC r00€| 662l(lndrox '"6uI'ur 'Ä 'x)a6Pur1ndl 3n1e1Slgnul =: 1Tn0 N3llI, 0 = salrT .{Il(safrT)ceo!f,S.IVJ =: aTqTsrANross NSH,L (zÄd > Ä) oNv (IId < ,{)oNv (Zxd > x) oNv (Ixd < x) tIt ruaJJorle6 :a1a1dg qo 'ualntrd )l(lndrox'-6uilur'l.ITo-Ä'x)a6Burxndl(lndrox ',6uI'uI 'Ä 'x)a6euIlna sslsSSTEJI =rNgHtr,uo11o8


34'7 |348:349 |350:3s4:355:356:357 |3s8:359:360:361:362,363:364 |365:366:361 |368:369:370:371:372 |37 41375:376:377 |378 |380:381 :382:383 r384:385:386:387:388:389:390 |391:392 t393:394 |395:396r397 |398!399:400:401:403:404 |40s:406:407 |408:409:410 |4111412t413 :Killed r= FALSE;IF Howoften = 0 THEN BEGINInc(y, Dify);Inc(x. DifX);OldY := y;OldX r= xiIF y> Botton THENIF x> Right THBNIF x< LefI THEN{ Irgendeine crenze verletzt ? }y := Top;x := Left;x := RiqhtiIF ChangeDir = 0 THEN BEGINChangeDir i= CDMin + Random(CDCons);DifX := -DifxEND ELSEDec(ChangeDir);PutImage(x, y, Im.Ing^, Xorput)iPutlmage(OIdx, OIdy, Im.Ing^, Xorput);{ In den Spieler gefLogen ?IF (x > px1) }AND (x < px2) AND (y > py1) AND(y < py2) OR (x r xI > px1) AND i* * *f < px2) AND(y + yI > py1) AND (y + y1 < py2) THEN BEGrirKilled := rRUE;Dec(lifes)iStatu6 iEND;FOR i := 1 TO pIBMax Do{ Von Spieler abge8cho8aen ? )IF PlShotslil'.Vi6ibLe THENIF (PIShot6til ^.x > x)(PIShotEIi]'.x < x+xl)(plshor8til'.y > y)(Plshotslil".y < y+yl)Krl1ed := TRUE;Inc(Point8r 500);END;Howoften := HOCR;ANDANDANDTHEN BEGINIF (Newshot = 0) IHEN BEGINi := 0;{ Welcher SchuB iEt noch nicht unterwega? }REPEATrnc(i);YIrll fi.-= MaxshotE) oR (Nor shor8[.i]^.visj.bLe);IF i Maxshots THENShotslil'.Setstartpos(x+8, y+15)Newshot ;:= NSCons + Randon(NSiIin)l'ENDiDec ( NewShot )END ELSEDec(Howoften);{ Schtl8se bewegen:FOR i := 1 TO Maxshot6 }DOIF Shot6til ^.viBibLe THEN ShotBlil'.Move;{ cetroffen ?IF, Killed THEN }BEGINY:"j!].:= FALSE; purrmage(x, y. rn.rng^, xorpur);IF Life6 = O THEN Quit := TRUE;FOR i r= 1 TO Maxshot8 DOIF shot6[i] ^.vi8ibleTHENWITH Shotelil^ DO BEGINPutlnage(x, y. In.Img^, Xorput);vieible := EALSE,END;AND;END;DESTRUCTOR OneRocket.Done;VAR414 : i I INTEGER;415 | BEGINFOR i := 1 TO Maxshot8 DO Dispo6e(ShotBti]);417 | END;418:4).9 | CONSTRUCTOR playerobj. Initi42Ot CONST42),1 b1=10ib2=8;b3= 5;11= 4;12=2r13=10;422 |4231 px = 3oO; py = ioo,424 | vAP425t i : INTEGER;426t BEGINb4 l4iiit lli=,,'l='fi,'liil """,= ii:,, I4J3: Botton := cetMaxy4341-Left t= 0 + plspace;pBspace;11:, Righr := cerMaxx416:-Top := pRspaceiO + pTspace; -117, x r= (Rj.ghr Lefr) Drv 2 + Letl-i438: y := Bottom - yl " 2i439r px1 r= x; pyl := yi4.19, px2 := x * xr; öiz := !, + yr;4471 SetActivepage(Ij;442t SetwrileMode(Copyput);1n1. y?Y::?1pI - Pl, pvl; .- Linero(pxr- b2, py - r1);111, Linero(px - b3, py - I2); r,ineroilx _4451»a.LineRel(0, i,i _ r:ii-4), r_in"n"i?o. ai,'4.4.6-, LineTo(px, py-1]); r,inerolix'+ ii, py _447t LineReI(0,tsl;-4)i lineneiio. ari'119, Linero(px + b3, py - 12); Linero(px +4,!r"l6ä, py - 1r);, Linero(px * pr, pil; r,ineroiix. oy-i ial;1?9, Lrnero(px - bl, py), Linero(px;451: |i, _ rr'i r1;LineTo(px + b1, by),a.22^t Catchl;äge(px - Li, pV - 13 - s, px +453:b1, py + 14,SetActivepage(O);rn);11!, Putlnage(x, y, rn.Ing^, xorpur);455: END,4s6:457 | PROCEDURE ptayerobi . ReadKeybord;458: vaR1;Eine <strong>Programm</strong>sammlung, die Sie gegenalle bekannten PC-Computer-Viren wappnetAuch schon betroffen?- Schäden durchinfizierte, unbrauchbare<strong>Programm</strong>dateien?- Datenverlustdurch formatierteundzerstörteSpeichermedien ?- Zeitverlust und Argerdurch Verstellen derSystemkonf iguration?rEs!^§*lF:igERä$:F$H*i*******uw,**"-r-.il Dt ourgs''P'iläJri*'lu'o o"' '"m#Pu**VirCheck -Ein Kontrollprogramm der Superklasse !. Kontrolle lhrer <strong>Programm</strong>e auf Längenänderung, Attributierung etc.o Spezieller Check für virusbedingte Abänderung <strong>des</strong> <strong>Programm</strong>co<strong>des</strong>. Uberwachung von Umbenennungen und Verschiebungen von Dateieno Beliebige Auswahl der kontrollierten <strong>Programm</strong>gruppeno Hohe Effektivität und Geschwlndigkeit durch variables SETUP. Komfortables, menügesteuertes, grafisches lnstallationsprogrammVirSpew -dreimal Schutz vor Virusinfektion. Drei <strong>Programm</strong>e zum Absichern lhrer Dateien vor Veränderungeno Ausführlicher Report über versuchte Zugriffe auf lhre Dateieno Virussicheres Fixieren von gesetzten Read-Only-Attributen. Ein- und Ausschalten <strong>des</strong> Schreibschutzes per TastendruckUnd als ZugabeCMOS-BKP - Konfigurationssicherung für AT- und AT- kompatible RechnerVirusDoktorFünf wertvolle <strong>Programm</strong>e zum Preis von einemplus ausführliche <strong>Programm</strong>anleitunginklusive Grundwissen über Computerviren99,- DM (unverblndliche Preisempfehlung)Wenn Sie über den DMV-Bestellservice bestellen, gilt folgen<strong>des</strong>:Bitte benutzen Sie die Bestellkarte.DMV-Verlag . Postfach 250 . 3440 tFür alle MS-DOS-Computerlnland:Ausland:Einzelpreis 99,- DM Einzelpreis 99,- DMzzgl. Versandkosten 4,- DM zzgl. Versandkosten 6,- DMEndpreis 103,- DM Endpreis 1OS,- DM


- ountqetdursstard aqcrlpulqrä^un - ounleedro uiouod t lo -'9 azq' ' q"#d,H,l?isep t41:1^ ueuqcaleq äulueJ6old ualllelsäq Jap lqezuv lap uoi *soo-s] ,1 'oe loleleuee lellEu :e[elslpouraol/\lo -'9*lNo -'69o0onqry 0ffi9 . 0gZ qcofi§od ' 0sffit'ftngu04nueq ous)lllolsog 0lllgr0lBI0u60 lEDlsIJ,,2/t e ts lrelv 0Ü ltElv*tNo -'69 fln tolBroucolEDlBr{')stO-,,U/I e'8) Ztg 11ur e6ruy oropourtuoC UB gEtUtY*l^to -'69 )sto_,,i*,,oü3!,?,"illj?ä5flj'.9ä§t5 j.ff 0sJ3r'f :113y!'uropupra^ 6lqelleq qc;1694qceu Llcne qcls uassel uoqJeJ elO'6u11cÄ3-rogog qcrnp 1relqc1l6gtusuo!lEtuluV lapllE uoulozula"lp"rnf Eunüptonzqrel eleledeg - uetlerqcll6gruqreJ eqcsllselueqd'ueruurer6or6 uolapue ul Japl!8 lap 6unpuetueTl 'leulol-lJl,i r6trv ,l"p lne ouäreüJIäosqv - roqcladspl;g elere<strong>des</strong> orarqoNrnletsel orp loqn lopo sney1 rep 11u 6unlenols oslo/t^lqeMäriränt:r^bprrni' uu uetairio>l ltlE/tl\snv - voltuolsounuolpeg rello^leqllolsuls soluolnls pun ulezuls uolelol lop u; pun Eptqcs'ueiün'ueqo uo ltlcls asto/t^lLleM ' :loru!'vulcllg ralerl!ua^ rosoluelnls'u€lros uelle uorr,,uelqolB»lBJl,, sep als uolLlcella8 :pEle 09elrur lo)u!Mlc!|8 lolEluozlroq äeqiqpr'r lall -- uo!Ua!o'r6-1a11ere6-tedng:uol»runjsounrrprg Jot'lcstteulolne tlt,\' eEuaute11n1. pun'lolqlapueUll, ,äuäuüeurrardv- sep rnl uapunles z qcou lnu tzle[ e6tuvijläil-..ä[;ää.v lri rirn,ärurpioori atuorzrile]s.l3eH' peads-qolH

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!