#include #include #include #include #include #include "drawing.h" #include "images.h" #include "input.h" int map[] = { 4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3, 2,8,8,2,8,8,8,8,8,8,8,8,8,8,8,2,2,8,8,8,8,8,8,8,8,8,8,8,2,8,8,2, 2,8,8,2,1,3,8,4,3,8,4,1,1,3,8,2,2,8,4,1,1,3,8,4,3,8,4,1,2,8,8,2, 2,1,1,5,3,2,8,2,2,8,2,4,3,2,8,2,2,8,2,4,3,2,8,2,2,8,2,4,6,1,1,2, 2,8,2,6,5,2,8,2,2,8,2,6,5,2,8,6,5,8,2,6,5,2,8,2,2,8,2,6,5,2,8,2, 2,8,6,1,1,5,8,6,5,8,6,1,1,5,8,8,8,8,6,1,1,5,8,6,5,8,6,1,1,5,8,2, 2,8,8,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,8,2, 6,1,1,3,8,4,3,8,8,8,8,8,8,4,3,8,8,4,3,8,8,8,8,8,8,4,3,8,4,1,1,5, 10,4,3,2,8,2,2,8,4,1,1,3,8,2,2,8,8,2,2,8,4,1,1,3,8,2,2,8,2,4,3,10, 10,6,5,2,8,2,2,8,6,1,1,5,8,2,6,1,1,5,2,8,6,1,1,5,8,2,2,8,2,6,5,10, 4,1,1,5,8,6,5,8,8,8,8,8,8,6,1,1,1,1,5,8,8,8,8,8,8,6,5,8,6,1,1,3, 2,8,8,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,8,2, 2,8,8,8,8,8,8,4,3,8,8,8,4,3,8,8,8,8,4,3,8,8,8,4,3,8,8,8,8,8,8,2, 2,8,8,4,1,1,1,5,6,3,8,8,6,5,8,8,8,8,6,5,8,8,4,5,6,1,1,1,3,8,8,2, 2,1,1,3,1,1,1,1,1,5,8,8,8,8,8,4,3,8,8,8,8,8,6,1,1,1,1,1,4,1,1,2, 2,8,8,2,8,8,8,8,8,8,8,4,3,8,8,2,2,8,8,4,3,8,8,8,8,8,8,8,2,8,8,2, 2,8,8,2,8,8,4,1,3,8,8,6,5,8,8,2,2,8,8,6,5,8,8,4,1,3,8,8,2,8,8,2, 6,1,1,1,1,1,5,10,6,1,1,1,1,1,1,5,6,1,1,1,1,1,1,5,10,6,1,1,1,1,1,5, }; int punkte1; int punkte2; int punkttest=0; int playerym; int playerxm; int i=0; int wahl=1; int monsteranzahl=4; int punkte=0; int verloren=0; int modus=0; int leben=3; int geschwindikeit=6; int geschwindikeitm=3; int monster1richtung=0; int monster3richtung=0; int monster4richtung=0; int abstandlinks; int abstandrechts; int abstandunten; int abstandoben; int xmonster1=15*12; int ymonster1=8*12; int xmonster2=16*12; int ymonster2=8*12; int xmonster3=18*12; int ymonster3=6*12; int xmonster4=1*12; int ymonster4=2*12; int btest4=1*12; int htest4=2*12; int btest3=18*12; int htest3=6*12; int btest2=16*12; int htest2=8*12; int btest1=8*12; int htest1=16*12; int monster2richtung=0; int collidem; int collide1m; int bewegung=0; int ziel; int random; int randx; int randy; int richtung=3; int breite=1*12; int hoehe=2*12; int key; int test=0; int collide; int collide1; int htest=16*12; int btest=13*12; int t=0; int a=0; int monsterwechsel=10; int karte; unsigned int next =0; int basis; int exponent; int basis1; int zeit=0; int potenzrechner(basis, exponent){ if(exponent==1){return basis;} if(exponent==0){return 1;} basis1=basis; for(exponent=exponent-1; exponent>0; exponent--){ basis=basis*basis1; } return basis; } unsigned int nextRand(void) { next=(next*1103515245+12345)%2147483648; return next; } int gefangen(void){ map[14*32+28]=4; map[14*32+29]=1; map[14*32+30]=1; map[15*32+28]=2; map[16*32+28]=2; map[1*32+28]=2; map[2*32+28]=2; map[2*32+29]=8; map[3*32+28]=6; map[3*32+29]=1; map[3*32+30]=1; map[14*32]=2; map[14*32+1]=1; map[14*32+2]=1; map[14*32+3]=3; map[15*32+3]=2; map[16*32+3]=2; map[17*32+3]=1; map[2*32+2]=8; map[2*32+2]=4; map[14*32+28]=5; map[14*32+29]=8; map[14*32+30]=8; map[15*32+28]=8; map[16*32+28]=8; verloren=0; modus=0; monster1richtung=0; xmonster1=2*12; ymonster1=1*12; xmonster2=30*12; ymonster2=1*12; xmonster3=3*12; ymonster3=15*12; xmonster4=30*12; ymonster4=15*12; htest4=15*12; btest4=30*12; btest3=3*12; htest3=15*12; btest2=30*12; htest2=1*12; btest1=2*12; htest1=1*12; monster2richtung=0; monster3richtung=0; bewegung=0; richtung=1; breite=16*12; hoehe=8*12; test=0; htest=8*12; btest=16*12; t=0; drawSprite(spr_tryagain, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); a=160;punkte1=0; punkttest=punkte; while(punkttest != 0){ punkttest=punkttest/10; punkte1=punkte1+1; } punkttest=punkte; while(punkte1 >0){ punkte2=punkttest/potenzrechner(10, punkte1-1); if(punkte2>=10){punkte2=10;} drawSprite(spr_punkte[punkte2],a,140,12,12); a=a+12; punkttest=punkttest-(punkte2*potenzrechner(10, punkte1-1)); punkte1=punkte1-1; } while(leben>i){ drawSpriteMasked(spr_pacmanlinks,163+i*14,120,12,12,0x0000); i=i+1; } i=0; leben=leben-1; Bdisp_PutDisp_DD(); drawSprite(spr_tryagain, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); keyupdate(); while(keydownlast(KEY_PRGM_RETURN)!=1){keyupdate();} keyupdate(); while(keydownlast(KEY_PRGM_RETURN)){keyupdate();} while(leben>i){ drawSpriteMasked(spr_pacmanlinks,163+i*14,120,12,12,0x0000); i=i+1; } i=0; DrawFrame(0x0000); Bdisp_PutDisp_DD(); while(1){ keyupdate(); if(keydownlast(KEY_PRGM_RETURN)){ while(keydownlast(KEY_PRGM_RETURN)){keyupdate();} return; } } } int monster4(int playerx, int playery) { bewegung=0; abstandlinks=1000; abstandrechts=1000; abstandoben=1000; abstandunten=1000; collidem=((htest4/12)); collidem=collidem*32; collide1m=(btest4/12); collidem=collidem+collide1m; if(ymonster4>=htest4+12){htest4=htest4+12;} else{} if(ymonster4<=htest4-12){htest4=htest4-12;} else{} if(xmonster4>=btest4+12){btest4=btest4+12;} else{} if(xmonster4<=btest4-12){btest4=btest4-12;} else{} if(richtung==1){playerym=playery-6;} if(richtung==2){playerxm=playerx+6;} if(richtung==3){playerym=playery+6;} if(richtung==4){playerxm=playerx-6;} if((map[collidem-1]>=7)&&(monster4richtung!=4)){ abstandlinks=xmonster4-playerxm; if (abstandlinks<=0){abstandlinks=904;} } if((map[collidem+1]>=7)&&(monster4richtung!=2)){ abstandrechts=playerxm-xmonster4; if (abstandrechts<=0){abstandrechts=903;} } if((map[collidem+32]>=7)&&(monster4richtung!=3)){ abstandunten=(playerym-ymonster4); if (abstandunten<=0){abstandunten=902;} } if((map[collidem-32]>=7)&&(monster4richtung!=1)){ abstandoben=(ymonster4-playerym); if (abstandoben<=0){abstandoben=901;} } if(modus<=0){ if((abstandlinksabstandrechts)&&(abstandrechtsxmonster4)&&(map[collidem-1]>=7)){ xmonster4=xmonster4-geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster4,ymonster4,12,12,0x0000);} else{if((playerx=7)){ xmonster4=xmonster4+geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster4,ymonster4,12,12,0x0000); } else{if((playery=7)){ ymonster4=ymonster4+geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster4,ymonster4,12,12,0x0000); } else{if((playery>ymonster4)&&(map[collidem-32]>=7)){ ymonster4=ymonster4-geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster4,ymonster4,12,12,0x0000); }}}drawSpriteMasked(spr_monsterlinks1,xmonster4,ymonster4,12,12,0x0000);} if((playerx==btest4)&&(playery==htest4)){ punkte=punkte+1600; xmonster4=30*12; ymonster4=15*12; htest4=15*12; btest4=30*12; drawSpriteMasked(spr_monster4links,xmonster4,ymonster4,12,12,0x0000); Bdisp_PutDisp_DD(); } } return; } int monster3(int playerx, int playery) { bewegung=0; abstandlinks=1000; abstandrechts=1000; abstandoben=1000; abstandunten=1000; if(monsterwechsel<=0){ playerxm=nextRand()%32; playerym=nextRand()%18;}else{monsterwechsel=monsterwechsel-1;} if(ymonster3>=htest3+12){htest3=htest3+12;} else{} if(ymonster3<=htest3-12){htest3=htest3-12;} else{} if(xmonster3>=btest3+12){btest3=btest3+12;} else{} if(xmonster3<=btest3-12){btest3=btest3-12;} else{} collidem=((htest3/12)); collidem=collidem*32; collide1m=(btest3/12); collidem=collidem+collide1m; if((map[collidem-1]>=7)&&(monster3richtung!=4)){ abstandlinks=xmonster3-playerxm; if (abstandlinks<=0){abstandlinks=904;} } if((map[collidem+1]>=7)&&(monster3richtung!=2)){ abstandrechts=playerxm-xmonster3; if (abstandrechts<=0){abstandrechts=903;} } if((map[collidem+32]>=7)&&(monster3richtung!=3)){ abstandunten=(playerym-ymonster3); if (abstandunten<=0){abstandunten=902;} } if((map[collidem-32]>=7)&&(monster3richtung!=1)){ abstandoben=(ymonster3-playerym); if (abstandoben<=0){abstandoben=901;} } if(modus<=0){ if((abstandlinksabstandrechts)&&(abstandrechtsxmonster3)&&(map[collidem-1]>=7)){ xmonster3=xmonster3-geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster3,ymonster3,12,12,0x0000);} else{if((playerx=xmonster3)&&(map[collidem+1]>=7)){ xmonster3=xmonster3+geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster3,ymonster3,12,12,0x0000); } else{if((playery=ymonster3)&&(map[collidem+32]>=7)){ ymonster3=ymonster3+geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster3,ymonster3,12,12,0x0000); } else{if((playery>ymonster3)&&(map[collidem-32]>=7)){ ymonster3=ymonster3-geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster3,ymonster3,12,12,0x0000); }}} drawSpriteMasked(spr_monsterlinks1,xmonster3,ymonster3,12,12,0x0000);} if((playerx==btest3)&&(playery==htest3)){ punkte=punkte+800; xmonster1=2*12; xmonster3=3*12; ymonster3=15*12; btest3=3*12; htest3=15*12; drawSpriteMasked(spr_monster2links,xmonster3,ymonster3,12,12,0x0000); Bdisp_PutDisp_DD(); } } return; } int monster2(int playerx, int playery){ bewegung=0; abstandlinks=1000; abstandrechts=1000; abstandoben=1000; abstandunten=1000; collidem=((htest2/12)); collidem=collidem*32; collide1m=(btest2/12); collidem=collidem+collide1m; if(ymonster2>=htest2+12){htest2=htest2+12;} else{} if(ymonster2<=htest2-12){htest2=htest2-12;} else{} if(xmonster2>=btest2+12){btest2=btest2+12;} else{} if(xmonster2<=btest2-12){btest2=btest2-12;} else{} if(richtung==1){playerym=playery-4;} if(richtung==2){playerxm=playerx+4;} if(richtung==3){playerym=playery+4;} if(richtung==4){playerxm=playerx-4;} if((map[collidem-1]>=7)&&(monster2richtung!=4)){ abstandlinks=xmonster2-playerxm; if (abstandlinks<=0){abstandlinks=904;} } if((map[collidem+1]>=7)&&(monster2richtung!=2)){ abstandrechts=playerxm-xmonster2; if (abstandrechts<=0){abstandrechts=903;} } if((map[collidem+32]>=7)&&(monster2richtung!=3)){ abstandunten=(playerym-ymonster2); if (abstandunten<=0){abstandunten=902;} } if((map[collidem-32]>=7)&&(monster2richtung!=1)){ abstandoben=(ymonster2-playerym); if (abstandoben<=0){abstandoben=901;} } if(modus<=0){ if((abstandlinksabstandrechts)&&(abstandrechtsxmonster2)&&(map[collidem-1]>=7)){ xmonster2=xmonster2-geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster2,ymonster2,12,12,0x0000);} else{if((playerx=7)){ xmonster2=xmonster2+geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster2,ymonster2,12,12,0x0000); } else{if((playery=7)){ ymonster2=ymonster2+geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster2,ymonster2,12,12,0x0000); } else{if((playery>ymonster2)&&(map[collidem-32]>=7)){ ymonster2=ymonster2-geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster2,ymonster2,12,12,0x0000); }}}drawSpriteMasked(spr_monsterlinks1,xmonster2,ymonster2,12,12,0x0000);} if((playerx==btest2)&&(playery==htest2)){ punkte=punkte+400; xmonster2=30*12; ymonster2=1*12; btest2=30*12; htest2=1*12; drawSpriteMasked(spr_monster2links,xmonster2,ymonster2,12,12,0x0000); Bdisp_PutDisp_DD(); } } return; } int monster1(int playerx, int playery){ bewegung=0; abstandlinks=1000; abstandrechts=1000; abstandoben=1000; abstandunten=1000; if(ymonster1>=htest1+12){htest1=htest1+12;} else{} if(ymonster1<=htest1-12){htest1=htest1-12;} else{} if(xmonster1>=btest1+12){btest1=btest1+12;} else{} if(xmonster1<=btest1-12){btest1=btest1-12;} else{} collidem=((ymonster1/12)); collidem=collidem*32; collide1m=(xmonster1/12); collidem=collidem+collide1m; if((map[collidem-1]>=7)&&(monster1richtung!=4)){ abstandlinks=xmonster1-playerx; if (abstandlinks<=0){abstandlinks=904;} } if((map[collidem+1]>=7)&&(monster1richtung!=2)){ abstandrechts=playerx-xmonster1; if (abstandrechts<=0){abstandrechts=903;} } if((map[collidem+32]>=7)&&(monster1richtung!=3)){ abstandunten=(playery-ymonster1); if (abstandunten<=0){abstandunten=902;} } if((map[collidem-32]>=7)&&(monster1richtung!=1)){ abstandoben=(ymonster1-playery); if (abstandoben<=0){abstandoben=901;} } if(modus<=0){ if((abstandlinksabstandrechts)&&(abstandrechtsbtest1)&&(map[collidem-1]>=7)){ xmonster1=xmonster1-geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster1,ymonster1,12,12,0x0000);} else{if((playerx=7)){ xmonster1=xmonster1+geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster1,ymonster1,12,12,0x0000); } else{if((playery=7)){ ymonster1=ymonster1+geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster1,ymonster1,12,12,0x0000); } else{if((playery>htest1)&&(map[collidem-32]>=7)){ ymonster1=ymonster1-geschwindikeitm; drawSpriteMasked(spr_monsterlinks1,xmonster1,ymonster1,12,12,0x0000); }}}drawSpriteMasked(spr_monsterlinks1,xmonster1,ymonster1,12,12,0x0000);} if((playerx==btest1)&&(playery==htest1)){ punkte=punkte+200; xmonster1=2*12; ymonster1=1*12; btest1=2*12; htest1=1*12; drawSpriteMasked(spr_monster1links,xmonster1,ymonster1,12,12,0x0000); Bdisp_PutDisp_DD(); } } return; } int pause(void){ i=0; drawSprite(spr_Play, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); while(leben>i){ drawSpriteMasked(spr_pacmanlinks,163+i*14,120,12,12,0x0000); i=i+1; } i=0; a=160;punkte1=0; punkttest=punkte; while(punkttest != 0){ punkttest=punkttest/10; punkte1=punkte1+1; } punkttest=punkte; while(punkte1 >0){ punkte2=punkttest/potenzrechner(10, punkte1-1); if(punkte2>=10){punkte2=10;} drawSprite(spr_punkte[punkte2],a,140,12,12); a=a+12; punkttest=punkttest-(punkte2*potenzrechner(10, punkte1-1)); punkte1=punkte1-1; } DrawFrame(0x0000); Bdisp_PutDisp_DD(); while (1){ keyupdate(); if(keydownlast(KEY_PRGM_RETURN)){ while (keydownlast(KEY_PRGM_RETURN)){keyupdate();} return; } } } int game(void) { modus=0; initDrawing(); Bdisp_EnableColor(1); while (1){ t=0; for(int i=0;i<=576;i++){ if(map[i]==8){t++;} } if(t==242-30){ map[1*32+28]=8; map[2*32+28]=1; map[2*32+29]=3; map[3*32+28]=3; map[3*32+29]=2; map[3*32+30]=8; } if(t==242-242/3){ map[14*32]=2; map[14*32+1]=8; map[14*32+2]=8; map[14*32+3]=6; map[15*32+3]=8; map[16*32+3]=8; map[17*32+3]=1; } if(t==0){ monsterwechsel=5; punkte=0; verloren=0; modus=0; leben=3; monster1richtung=0; xmonster1=31*12; ymonster1=2*12; xmonster2=27*12; ymonster2=17*12; xmonster3=4*12; ymonster3=17*12; monster2richtung=0; monster3richtung=0; bewegung=0; richtung=1; breite=16*12; hoehe=13*12; test=0; htest=16*12; btest=13*12; t=0; next =0; geschwindikeit=geschwindikeit*1.2; geschwindikeitm=geschwindikeitm*1.3; drawSprite(spr_YouWon, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); a=160;punkte1=0; punkttest=punkte; while(punkttest != 0){ punkttest=punkttest/10; punkte1=punkte1+1; } punkttest=punkte; while(punkte1 >0){ punkte2=punkttest/potenzrechner(10, punkte1-1); if(punkte2>=10){punkte2=10;} drawSprite(spr_punkte[punkte2],a,140,12,12); a=a+12; punkttest=punkttest-(punkte2*potenzrechner(10, punkte1-1)); punkte1=punkte1-1; } while(leben>i){ drawSpriteMasked(spr_pacmanlinks,163+i*14,120,12,12,0x0000); i=i+1; } i=0; Bdisp_PutDisp_DD(); drawSprite(spr_YouWon, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); keyupdate(); while(leben>i){ drawSpriteMasked(spr_pacmanlinks,163+i*14,120,12,12,0x0000); i=i+1; } i=0; DrawFrame(0x0000); Bdisp_PutDisp_DD(); while(1){ keyupdate(); if(keydownlast(KEY_PRGM_RETURN)){ while(keydownlast(KEY_PRGM_RETURN)){keyupdate();} return; } } } keyupdate(); if(keydownlast(KEY_PRGM_MENU)) { pause(); } else { if(keydownlast(KEY_PRGM_EXIT)){ while(keydownlast(KEY_PRGM_EXIT)){keyupdate();} drawSprite(spr_quit, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); a=160;punkte1=0; punkttest=punkte; while(punkttest != 0){ punkttest=punkttest/10; punkte1=punkte1+1; } punkttest=punkte; while(punkte1 >0){ punkte2=punkttest/potenzrechner(10, punkte1-1); if(punkte2>=10){punkte2=10;} drawSprite(spr_punkte[punkte2],a,140,12,12); a=a+12; punkttest=punkttest-(punkte2*potenzrechner(10, punkte1-1)); punkte1=punkte1-1; } while(leben>i){ drawSpriteMasked(spr_pacmanlinks,163+i*14,120,12,12,0x0000); i=i+1; } i=0; Bdisp_PutDisp_DD(); drawSprite(spr_quit, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); keyupdate(); int o=0; while(o==0){ keyupdate(); if(keydownlast(KEY_PRGM_EXIT)){ while(keydownlast(KEY_PRGM_EXIT)){keyupdate();} o=1;} if(keydownlast(KEY_PRGM_RETURN)){ while(keydownlast(KEY_PRGM_RETURN)){keyupdate();} return; } } } if(hoehe>=htest+12){htest=htest+12;} else{} if(hoehe<=htest-12){htest=htest-12;} else{} if(breite>=btest+12){btest=btest+12;} else{} if(breite<=btest-12){btest=btest-12;} else{} if(modus<=0){modus=0;} collide=((htest/12)); collide=collide*32; collide1=(btest/12); collide=collide+collide1; ziel=collide; /*if(collide==(32*6)+30){ hoehe=12*6; breite=12*2; htest=12*6; btest=12*2; drawSpriteMasked(spr_pacmanessen,breite,hoehe,12,12,0x0000);Bdisp_PutDisp_DD(); } else{} if(collide==(32*6+1)){ hoehe=12*6; breite=12*29; htest=12*6; btest=12*29; drawSpriteMasked(spr_pacmanessen,breite,hoehe,12,12,0x0000);Bdisp_PutDisp_DD(); } if(collide==(32*11)+30){ hoehe=12*11; breite=12*2; htest=12*11; btest=12*2; drawSpriteMasked(spr_pacmanessen,breite,hoehe,12,12,0x0000);Bdisp_PutDisp_DD(); } else{} if(collide==(32*11)+1){ hoehe=12*11; breite=12*29; htest=12*11; btest=12*29; drawSpriteMasked(spr_pacmanessen,breite,hoehe,12,12,0x0000);Bdisp_PutDisp_DD(); } else{}*/ if(modus>0){modus=modus-0.01;} if(map[collide]==8){ punkte=punkte+10; map[collide]=7;drawSpriteMasked(spr_pacmanessen,breite,hoehe,12,12,0x0000);Bdisp_PutDisp_DD();} else{} if(map[collide]==9){ do{ randx=nextRand()%29; randy=nextRand()%16; randy=randy*32; random=randx+randy; } while((map[random]<7) && (map[random!=10])); map[random]=9; modus=100; punkte=punkte+50; map[collide]=7;drawSpriteMasked(spr_pacmanessen,breite,hoehe,12,12,0x0000);Bdisp_PutDisp_DD();} else{} if(keydownlast(KEY_PRGM_RIGHT)) { richtung=1; collide=((htest/12)); collide=collide*32; collide1=(btest/12)+1; collide=collide+collide1; if(map[collide]>=7){breite=breite+geschwindikeit;} else{} } else {} if(keydownlast(KEY_PRGM_LEFT)) { richtung=2; collide=((htest/12)); collide=collide*32; collide1=(btest/12)-1; collide=collide+collide1; if(map[collide]>=7){breite=breite-geschwindikeit;} else{} } else {} if(keydownlast(KEY_PRGM_UP)) { richtung=3; collide=((htest/12)); collide=collide-1; collide=collide*32; collide1=((btest)/12); collide=collide+collide1; if(map[collide+1]<7 && (breite-btest>0)){test=1;} else{test=0;} if((map[collide]>=7) && (test==0)){hoehe=hoehe-geschwindikeit;} else{} } else {} if(keydownlast(KEY_PRGM_DOWN)) { richtung=4; collide=((htest/12))+1; collide=collide*32; collide1=((btest)/12); collide=collide+collide1; if(map[collide+1]<7 && (breite-btest>0)){test=1;} else{test=0;} if((map[collide]>=7)&& (test==0)){hoehe=hoehe+geschwindikeit;} else{} } else {} int bildbreite=1; int bildhoehe=1; Bdisp_AllClr_VRAM(); for(int y=0; y<576; y++) { if ((y >= 32) && (y < 64) && (bildhoehe < 12)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 64) && (y < 96) && (bildhoehe < 24)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 96) && (y < 128) && (bildhoehe < 36)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 128) && (y < 160) && (bildhoehe < 48)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 160) && (y < 192) && (bildhoehe < 60)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 192) && (y < 224) && (bildhoehe < 72)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 224) && (y < 256) && (bildhoehe < 84)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 256) && (y < 288) && (bildhoehe < 96)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 288) && (y < 320) && (bildhoehe < 108)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 320) && (y < 352) && (bildhoehe < 120)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 352) && (y < 384) && (bildhoehe < 132)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 384) && (y < 416) && (bildhoehe < 144)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 416) && (y < 448) && (bildhoehe < 156)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 448) && (y < 480) && (bildhoehe < 168)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 480) && (y < 512) && (bildhoehe < 180)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 512) && (y < 544) && (bildhoehe < 192)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 544) && (y < 576) && (bildhoehe < 204)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} if ((y >= 576) && (y < 608) && (bildhoehe < 216)){bildhoehe=bildhoehe+12; bildbreite=1;} else{} unsigned int draw = map[y]; drawSprite(spr_map[draw-1],bildbreite,bildhoehe, 12, 12); bildbreite=bildbreite+12; } if(monsteranzahl){monster1(btest, htest); } if(monsteranzahl>=2){monster2(btest, htest);} if(monsteranzahl>=3){monster3(btest, htest);} if(monsteranzahl>=4){monster4(btest, htest);} if(richtung==1){drawSpriteMasked(spr_pacmanrechts,breite,hoehe,12,12,0x0000);} else{} if(richtung==2){drawSpriteMasked(spr_pacmanlinks,breite,hoehe,12,12,0x0000);} else{} if(richtung==3){drawSpriteMasked(spr_pacmanhoch,breite,hoehe,12,12,0x0000);} else{} if(richtung==4){drawSpriteMasked(spr_pacmanrunter,breite,hoehe,12,12,0x0000);} else{} if(leben<=0){ drawSprite(spr_Youlost, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); a=160;punkte1=0; punkttest=punkte; while(punkttest != 0){ punkttest=punkttest/10; punkte1=punkte1+1; } punkttest=punkte; while(punkte1 >0){ punkte2=punkttest/potenzrechner(10, punkte1-1); if(punkte2>=10){punkte2=10;} drawSprite(spr_punkte[punkte2],a,140,12,12); a=a+12; punkttest=punkttest-(punkte2*potenzrechner(10, punkte1-1)); punkte1=punkte1-1; } while(leben>i){ drawSpriteMasked(spr_pacmanlinks,163+i*14,120,12,12,0x0000); i=i+1; } i=0; Bdisp_PutDisp_DD(); drawSprite(spr_Youlost, 135,70,100,40); drawSprite(spr_schwarz, 160,120,48,12); keyupdate(); while(leben>i){ drawSpriteMasked(spr_pacmanlinks,163+i*14,120,12,12,0x0000); i=i+1; } i=0; DrawFrame(0x0000); Bdisp_PutDisp_DD(); while(1){ keyupdate(); if(keydownlast(KEY_PRGM_RETURN)){ while(keydownlast(KEY_PRGM_RETURN)){keyupdate();} return; } }} punkte1=punkte; a=1;punkte1=0; punkttest=punkte; while(punkttest != 0){ punkttest=punkttest/10; punkte1=punkte1+1; } punkttest=punkte; while(punkte1 >0){ punkte2=punkttest/potenzrechner(10, punkte1-1); if(punkte2>=10){punkte2=10;} drawSprite(spr_punkte[punkte2],a,1,12,12); a=a+12; punkttest=punkttest-(punkte2*potenzrechner(10, punkte1-1)); punkte1=punkte1-1; } /* a=50;punkte1=0; punkttest=modus; while(punkttest != 0){ punkttest=punkttest/10; punkte1=punkte1+1; } punkttest=modus; while(punkte1 >0){ punkte2=punkttest/potenzrechner(10, punkte1-1); if(punkte2>=10){punkte2=10;} drawSprite(spr_punkte[punkte2],a,1,12,12); a=a+12; punkttest=punkttest-(punkte2*potenzrechner(10, punkte1-1)); punkte1=punkte1-1; }*/ DrawFrame(0x0000); Bdisp_PutDisp_DD(); } } return; } int main(void){ wahl=1; initDrawing(); Bdisp_EnableColor(1); Bdisp_AllClr_VRAM(); while(1){ map[14*32+28]=4; map[14*32+29]=1; map[14*32+30]=1; map[15*32+28]=2; map[16*32+28]=2; map[2*32+2]=8; map[1*32+3]=2; map[3*32+1]=1; map[2*32+3]=2; map[3*32+3]=5; map[3*32+2]=1; map[1*32+28]=2; map[2*32+28]=2; map[2*32+29]=8; map[3*32+28]=6; map[3*32+29]=1; map[3*32+30]=1; map[14*32]=2; map[14*32+1]=1; map[14*32+2]=1; map[14*32+3]=3; map[15*32+3]=2; map[16*32+3]=2; map[17*32+3]=1; map[2*32+2]=8; zeit=0; monsterwechsel=5; punkte=0; verloren=0; modus=0; leben=3; for(int i=0;i<=576;i++){ if(map[i]==7){map[i]=8;} } monster1richtung=0; xmonster1=2*12; ymonster1=1*12; xmonster2=30*12; ymonster2=1*12; xmonster3=3*12; ymonster3=15*12; xmonster4=30*12; ymonster4=15*12; htest4=15*12; btest4=30*12; btest3=3*12; htest3=15*12; btest2=30*12; htest2=1*12; btest1=2*12; htest1=1*12; monster2richtung=0; monster3richtung=0; bewegung=0; richtung=1; breite=16*12; hoehe=8*12; test=0; htest=8*12; btest=16*12; t=0; next =0; Bdisp_AllClr_VRAM(); Bdisp_Fill_VRAM(0x0000, 4); if (keydownlast(KEY_PRGM_UP)){ keyupdate(); while (keydownlast(KEY_PRGM_UP)){keyupdate();} wahl=wahl-1;} if (keydownlast(KEY_PRGM_DOWN)){ keyupdate(); while (keydownlast(KEY_PRGM_DOWN)){keyupdate();} wahl=wahl+1;} if (wahl>2){wahl=1;} if (wahl<1){wahl=2;} drawSprite(spr_Play, 135,95,100,40); drawSprite(spr_Exit, 135,150,100,40); if(wahl==1){drawSpriteMasked(spr_rahmen, 135, 150, 100, 40,0xf800);} if(wahl==2){drawSpriteMasked(spr_rahmen, 135, 95, 100, 40,0xf800);} drawSprite(spr_logo, 110,1,150,70); drawSprite(spr_fXXa, 1,1,100,40); drawSprite(spr_fXXa, 284,1,100,40); drawSprite(spr_monstergros, 10,90,100,100); drawSprite(spr_monstergros, 275,90,100,100); DrawFrame(0x0000); Bdisp_PutDisp_DD(); keyupdate(); if(keydownlast(KEY_PRGM_RETURN)){ if(wahl==2){return 0;} if(wahl==1){ map[2*32+2]=4; map[1*32+3]=8; map[3*32+1]=8; map[2*32+3]=1; map[3*32+3]=4; map[3*32+2]=2; map[14*32+28]=5; map[14*32+29]=8; map[14*32+30]=8; map[15*32+28]=8; map[16*32+28]=8; game();} } } return 0; }