Types -> Fonts/Grafiken/etc. nicht auffindbar [nicht gelö
Übersicht

![]() |
CaesiumBetreff: Types -> Fonts/Grafiken/etc. nicht auffindbar [nicht gelö |
![]() Antworten mit Zitat ![]() |
---|---|---|
huhu zusammen,
habe folgendes problem :/ mein momentanes projekt laeuft ueber arrays (bezieht sich vor allem auf schuesse, gegner, etc. ). da ich dachte, mit types wäre das ganze uebersichtlicher, wollte ich es umbauen. die programmstruktur sieht in etwa so aus: testMAIN.bb: Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Type T_testtype Field testfield Field grafik Field x,y End Type testinstanz.T_testtype = New T_testtype testinstanz\testfield = 1 testinstanz\grafik = LoadImage("FX\gfx\cursor.png") testinstanz\x = 100 testinstanz\y = 100 Include "testFUNC.bb" Repeat ; ; Cls Locate x,y TESTFUNC(testinstanz) Flip ; ; Until KeyHit(1) testFUNC.bb: Code: [AUSKLAPPEN] Function TESTFUNC(testinstanz.T_testtype)
TESTFUNC2(testinstanz) End Function Function TESTFUNC2(testinstanz.T_testtype) Print testinstanz\testfield DrawImage testinstanz\grafik,testinstanz\x,testinstanz\y End Function nun, gesagt getan. habe alles wirklich ZIG mal ueberprueft und ich kann den fehler einfach nicht finden. als fehlermeldung bekomme ich jedesmal das ein font/grafik nicht gefunden werden konnte. ich bin mit meinem latein am ende. wäre super, wenn mir jemand nen tipp geben könnte, woran denn das liegen könnte. ![]() danke. gruß, caesium //edit - anmerkung: vorher, mit den arrays hats natuerlich funktioniert. die pfade zu grafiken etc. sind die selben geblieben. |
||
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. ![]() |
- Zuletzt bearbeitet von Caesium am Di, Feb 19, 2008 20:31, insgesamt einmal bearbeitet
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
also bei mir gehts...muss am Pfad liegen. | ||
![]() |
Caesium |
![]() Antworten mit Zitat ![]() |
---|---|---|
hab mich falsch ausgedrückt sorry, diese beispielversion funktioniert.
das eigentliche programm läuft auf die gleiche art und weise, funktioniert aber nicht. :/ gruß, caesium |
||
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. ![]() |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was soll das Locate x,y? Oo
Und bitte, meine Glaskugel hat grad die Grippe, Code wäre nett. |
||
![]() |
Caesium |
![]() Antworten mit Zitat ![]() |
---|---|---|
code ist eben etwas.. länger - der des kompletten shooters, deswegen hab ich ihn nicht sofort gepostet. wer sich den - wahrscheinlich sogar umstaendlich - programmierten code ansehen moechte, dem sei natuerlich gedankt.
das locate x,y hab ich nur reingemischt, damit die testweise ausgedruckte "1" eben mit print bei jedem schleifendurchlauf bei 0,0 erscheint und nicht jedesmal verschoben wird... haette man natuerlich auch text 0,0,"1" nehmen können, aber... das is ja wurst. *g* main.bb: Code: [AUSKLAPPEN] AppTitle "Zap"
SeedRnd MilliSecs() ;zufallsgenerator initialisieren HidePointer() ;mauszeiger ausblenden ;###### TYPES Type T_Spieler Field x Field y Field punkte% Field grafik Field explosion_schiff[1] Field explosion_treffer[1] Field hp# Field mp# Field schild_mp# Field nachbrenner_mp# Field raketen_munition Field hp_balken# Field mp_balken# Field schild_mp_balken# Field nachbrenner_mp_balken# End Type Type T_Gegner Field x Field y Field grafik Field explosion_schiff[1] Field explosion_treffer[1] Field hp End Type spieler.T_Spieler = New T_Spieler spieler\x = 375 spieler\y = 450 spieler\grafik = LoadImage("FX\gfx\spieler_schub.bmp") spieler\hp = 100 spieler\mp = 100 spieler\schild_mp = 100 spieler\nachbrenner_mp = 100 spieler\raketen_munition = 10 spieler\hp_balken = 100 spieler\mp_balken = 100 spieler\schild_mp_balken = 100 spieler\nachbrenner_mp_balken = 100 ;###### ARRAYS Dim menue_sterne1#(500,2) Dim laser(75,2) Dim raketen(75,2) Dim npc_laser_typ1(250,2) Dim npc_typ1#(20,4) Dim highscore_liste(10) Dim explosion_npctreffer_status(20) Dim spieler_explosion(1) Dim npc_typ1_explodiert(20,1) Dim explosion_spielertreffer(1) Dim explosion_npctreffer(20,1) Dim planet(3,3) Dim planeten_gfx(9) Dim level(10) ;anzahl gegner in den levels level(1) = 3 level(2) = 4 level(3) = 5 level(4) = 6 level(5) = 7 level(6) = 8 level(7) = 10 level(8) = 12 level(9) = 15 level(10) = 20 ;jedem gegner 100 lebenspunkte zuweisen For i = 1 To 20 npc_typ1(i,4) = 100 Next ;gegebene highscore liste highscore_liste(1) = 380 highscore_liste(2) = 350 highscore_liste(3) = 325 highscore_liste(4) = 300 highscore_liste(5) = 250 highscore_liste(6) = 225 highscore_liste(7) = 175 highscore_liste(8) = 125 highscore_liste(9) = 75 ;###### VARIABLEN Global RESOLUTION_X = 800 Global RESOLUTION_Y = 600 Global MAUS_X = 400 Global MAUS_Y = 300 Global xpos_menue_hintergrund# = 0 Global ypos_menue_hintergrund# = 0 Global credits = 0 Global highscores = 0 Global steuerung = 0 Global menue_auswahl = 0 Global npc_laser_typ1_zaehler = 0 Global laser_zaehler = 0 Global raketen_zaehler = 0 Global spieler_explodiert = 0 Global explosion_spielertreffer_status = 0 Global anzahl_abgeschossener_npcs = 0 Global level_aktiv = 1 Global zurueck_button_overlap = 0 Global lautstaerke# = 0.8 Global spieler_schildanzeige = 0 Global spieler_schildanzeige_zeit = 0 Global schildleer_zeit = 0 Global nachbrenner_energie# = 100 Global raketen_delay_balken = 100 Global highscore_ypos = 0 Global HF_timer = 0 Global raketen_aufgeladen = 0 Global differenz_raketen_verzoegerung = 0 Global soundchannel = 0 Global lautstaerke_balken# = 160 Global screenshot = 0 ;###### FONTS Global FONT_comic_sans_ms = LoadFont("Comic Sans MS",24,0,0,0) ;comic sans MS font laden (fett), gr: 24 Global FONT_comic_sans_ms_kl = LoadFont("Comic Sans MS",18,0,0,0) ;comic sans MS font laden (fett), gr: 14 Global FONT_comic_sans_ms_gr = LoadFont("Comic Sans MS",65,1,0,0) ;comic sans MS font laden (fett), gr: 65 Global FONT_comic_sans_ms_skl = LoadFont("Comic Sans MS",15,0,0,0) ;comic sans MS font laden (fett), gr: 15 ;###### GRAFIKEN Global spieler_schiff_schub = LoadImage("FX\gfx\spieler_schub.bmp") Global spieler_schiff_bremse = LoadImage("FX\gfx\spieler_bremse.bmp") Global npc_schiff = LoadImage("FX\gfx\npc1.bmp") Global hintergrund = LoadImage("FX\gfx\sterne.bmp") Global laser_gfx = LoadImage("FX\gfx\laser.png") Global raketen_gfx = LoadImage("FX\gfx\rakete.bmp") Global cursor_gfx = LoadImage("FX\gfx\cursor.png") planeten_gfx(1) = LoadImage("FX\gfx\planet1_klein.png") planeten_gfx(2) = LoadImage("FX\gfx\planet1_mittel.png") planeten_gfx(3) = LoadImage("FX\gfx\planet1_gross.png") planeten_gfx(4) = LoadImage("FX\gfx\planet2_klein.png") planeten_gfx(5) = LoadImage("FX\gfx\planet2_mittel.png") planeten_gfx(6) = LoadImage("FX\gfx\planet2_gross.png") planeten_gfx(7) = LoadImage("FX\gfx\planet3_klein.png") planeten_gfx(8) = LoadImage("FX\gfx\planet3_mittel.png") planeten_gfx(9) = LoadImage("FX\gfx\planet3_gross.png") ;###### ANIMATIONEN Global explosion_schiff_gfx = LoadAnimImage("FX\gfx\schiffexplosion.png",150,150,0,20) Global explosion_treffer_gfx = LoadAnimImage("FX\gfx\einschlagsexplosion.png",25,25,0,20) ;###### GRAFIKEN - TRANSPARENZ MaskImage laser_gfx,237,37,225 MaskImage cursor_gfx,237,13,219 ;###### BILDER ERSTELLEN UND IN BILDBUFFER ZEICHNEN menue_hintergrund = CreateImage(RESOLUTION_X,RESOLUTION_Y) SetBuffer ImageBuffer(menue_hintergrund) For i = 1 To 500 Plot Rand(RESOLUTION_X),Rand(RESOLUTION_Y) Next ;###### SOUNDS Global laserton = LoadSound("FX\sfx\sounds\laser.wav") Global lasertrefferton = LoadSound("FX\sfx\sounds\treffer.wav") Global leer = LoadSound("FX\sfx\sounds\leer.wav") Global explosion_schiff_sfx = LoadSound("FX\sfx\sounds\explosion.mp3") Global spielgestartet = LoadSound("FX\sfx\sounds\spielgestartet.wav") Global pause_sfx = LoadSound("FX\sfx\sounds\pause.wav") ;###### TIMER ERSTELLEN Global gametimer = CreateTimer(40) ;###### INCLUDES Include "functions.bb" ;funktionen einbinden Graphics RESOLUTION_X,RESOLUTION_Y,16,2 SetBuffer BackBuffer() ;auf bildschirmrueckseite zeichnen ;HAUPTSCHLEIFE-BEGINN Repeat Cls Locate x,y ;WENN ZURUECK ANGEKLICKT -> ZURUECK zurueck_button_overlap = 0 ;FONT SETZEN SetFont FONT_comic_sans_ms ;MENUE HINTERGRUND ZEICHNEN TileBlock menue_hintergrund,xpos_menue_hintergrund,ypos_menue_hintergrund ;MENUE HINTERGRUND BEWEGEN xpos_menue_hintergrund = xpos_menue_hintergrund - 0.5 ypos_menue_hintergrund = ypos_menue_hintergrund - 0.1 ;UEBER MENUE HINTERGRUND STERNE ZEICHNEN UND BEWEGEN MENUE_STERNEZEICHNEN() If credits = 0 And steuerung = 0 And highscores = 0 Then If menue_auswahl <> 4 Then ;BUTTONS ZEICHNEN Color 0,0,150 Rect (RESOLUTION_X/2)-75,250,150,40,0 Rect (RESOLUTION_X/2)-75,300,150,40,0 Rect (RESOLUTION_X/2)-75,350,150,40,0 Rect (RESOLUTION_X/2)-75,400,150,40,0 Rect (RESOLUTION_X/2)-75,450,150,40,0 Color 255,255,255 ;MENUE AUSWAHL - VERSCHIEDENE BUTTONS If ImageRectOverlap(cursor_gfx,MAUS_X,MAUS_Y,(RESOLUTION_X/2)-75,250,150,40) Then Color 0,0,255 Rect (RESOLUTION_X/2)-75,250,150,40,1 If MouseHit(1) Then HF_timer = MilliSecs() menue_auswahl = 1 EndIf Color 255,255,255 ElseIf ImageRectOverlap(cursor_gfx,MAUS_X,MAUS_Y,(RESOLUTION_X/2)-75,300,150,40) Then Color 0,0,255 Rect (RESOLUTION_X/2)-75,300,150,40,1 If MouseHit(1) Then menue_auswahl = 2 EndIf Color 255,255,255 ElseIf ImageRectOverlap(cursor_gfx,MAUS_X,MAUS_Y,(RESOLUTION_X/2)-75,350,150,40) Then Color 0,0,255 Rect (RESOLUTION_X/2)-75,350,150,40,1 If MouseHit(1) Then menue_auswahl = 3 EndIf Color 255,255,255 ElseIf ImageRectOverlap(cursor_gfx,MAUS_X,MAUS_Y,(RESOLUTION_X/2)-75,400,150,40) Then Color 0,0,255 Rect (RESOLUTION_X/2)-75,400,150,40,1 If MouseHit(1) Then menue_auswahl = 4 EndIf Color 255,255,255 ElseIf ImageRectOverlap(cursor_gfx,MAUS_X,MAUS_Y,(RESOLUTION_X/2)-75,450,150,40) Then Color 0,0,255 Rect (RESOLUTION_X/2)-75,450,150,40,1 If MouseHit(1) Then menue_auswahl = 5 EndIf Color 255,255,255 EndIf EndIf ;BUTTONS BESCHRIFTEN Text RESOLUTION_X/2,270,"Spiel starten",1,1 Text RESOLUTION_X/2,320,"Credits",1,1 Text RESOLUTION_X/2,370,"Steuerung",1,1 Text RESOLUTION_X/2,420,"Highscores",1,1 Text RESOLUTION_X/2,470,"Beenden",1,1 EndIf ;SPIELNAME ALS UEBERSCHRIFT SetFont FONT_comic_sans_ms_gr Text RESOLUTION_X/2,65,"Zap !",1,0 SetFont FONT_comic_sans_ms If menue_auswahl = 1 Then soundchannel = PlaySound(spielgestartet) SPIELEN(spieler) ElseIf menue_auswahl = 2 Then credits = 1 MENUE_CREDITS() ElseIf menue_auswahl = 3 Then steuerung = 1 MENUE_STEUERUNG() ElseIf menue_auswahl = 4 Then highscores = 1 MENUE_HIGHSCORES(spieler) ElseIf menue_auswahl = 5 Then End EndIf If KeyHit(1) Or menue_auswahl = 5 Then End ;MAUSPOSITION AKTUALISIEREN MAUS_X = MouseX() MAUS_Y = MouseY() ;MAUSSPEICHER LOESCHEN FlushMouse ;MAUS ZEICHNEN DrawImage cursor_gfx,MAUS_X,MAUS_Y Flip Until KeyHit(1) Or menue_auswahl = 5 End ;HAUPTSCHLEIFE-ENDE functions.bb: Code: [AUSKLAPPEN] Function SPIELEN(spieler.T_Spieler)
VARIABLEN_ZURUECKSETZEN() ;TASTATUR- UND MAUSSPEICHER LÖSCHEN FlushMouse FlushKeys ;-------------------- SPIELSCHLEIFE-BEGINN -------------------- Repeat Cls ;############################ SPIEL PAUSIEREN ############################ PAUSENABFRAGE() ;############################ ANZEIGEN, HINTERGRUND UND AEHNLICHES ############################ ;SPIELHINTERGRUND SIMULIEREN Y_HINTERGRUND = Y_HINTERGRUND + 1 If Y_HINTERGRUND > 200 Then Y_HINTERGRUND = 1 TileBlock hintergrund,0,Y_HINTERGRUND ;PLANETEN PLANETEN() ;ANZEIGEN UND REGENERATIONEN ANZEIGEN_REGENERATIONEN(spieler) ;############################ SPIELER, SCHILD, NACHBRENNER, BEWEGUNG ############################ SPIELERSCHIFF_SCHILD_BEWEGUNG(spieler) ;############################ SPIELER WAFFEN ############################ ;LASER ABFRAGE UND ABSCHUSS (LEERTASTE) If KeyDown(57) Then If MilliSecs()-laser_verzoegerung > 150 Then ;alle 150msecs schuss moeglich If spieler\mp >= 20 Then ;schusskosten = 20 energie laser_zaehler = laser_zaehler + 1 laser_verzoegerung = MilliSecs() ;nach schuss wird zeit "gestoppt" spieler\mp = spieler\mp - 20 ;schusskosten = 20 energie If spieler\mp < 0 Then spieler\mp = 0 If spieler\mp > 100 Then spieler\mp = 100 If laser_zaehler > 75 Then laser_zaehler = 1 laser(laser_zaehler,0) = 1 laser(laser_zaehler,1) = spieler\x + 4 laser(laser_zaehler,2) = spieler\y - 25 soundchannel = PlaySound(laserton) EndIf EndIf EndIf ;BEWEGUNG DER LASER For i=1 To 75 If laser(i,2) < 0 Then laser(i,0) = 0 ;laser aus der bildflaeche? -> loeschen If laser(i,0) = 1 Then DrawImage laser_gfx, laser(i,1), laser(i,2) ;laser zeichnen laser(i,2) = laser(i,2) - 8 ;geschwindigkeit des lasers: 8 EndIf Next ;RAKETEN ABFRAGE UND ABSCHUSS (ALT-TASTE/ALT GR TASTE) If KeyHit(56) Or KeyHit(184) Then differenz_raketen_verzoegerung = MilliSecs() - raketen_verzoegerung ;delay der rakete If differenz_raketen_verzoegerung > 5000 Then;delay der rakete: 10 sekunden If spieler\raketen_munition > 0 And spieler\mp >= 50 Then ;schusskosten = 50 energie raketen_verzoegerung = MilliSecs() spieler\mp = spieler\mp - 50 ;schusskosten = 50 energie spieler\raketen_munition = spieler\raketen_munition - 1 raketen_zaehler = raketen_zaehler + 1 If raketen_zaehler > 75 Then raketen_zaehler = 1 raketen(raketen_zaehler,0) = 1 raketen(raketen_zaehler,1) = spieler\x + 9 raketen(raketen_zaehler,2) = spieler\y - 25 soundchannel = PlaySound(laserton) ElseIf spieler\mp < 50 And spieler\raketen_munition < 1 Then Color 255,0,0 Text 400,500,"KEINE RAKETEN-MUNITION! KEINE ENERGIE!",1,0 soundchannel = PlaySound(leer) Color 255,0,0 ElseIf spieler\mp < 50 Then Color 255,0,0 Text 400,500,"NICHT GENÜGEND ENERGIE!",1,0 soundchannel = PlaySound(leer) Color 255,255,255 ElseIf spieler\raketen_munition < 1 Then Color 255,0,0 Text 400,500,"KEINE RAKETEN-MUNITION VORHANDEN!",1,0 soundchannel = PlaySound(leer) Color 255,255,255 EndIf Else Color 255,0,0 Text 400,500,"RAKETENWERFER NICHT AUFGELADEN!",1,0 Text 400,400,"AUFGELADEN IN: " + raketen_aufgeladen,1,0 raketen_aufgeladen = differenz_raketen_verzoegerung / 100 soundchannel = PlaySound(leer) Color 255,255,255 EndIf EndIf ;BEWEGUNG DER RAKETEN For i=1 To 75 If raketen(i,2) < 0 Then raketen(i,0) = 0 If raketen(i,0) = 1 Then DrawImage raketen_gfx, raketen(i,1), raketen(i,2) raketen(i,2) = raketen(i,2) - 4 EndIf Next ;############################ NPC WAFFEN ############################ ;ABFRAGE: WURDE WAFFE ABGEFEUERT? ZUFALL! For l = 1 To 10 If level_aktiv = l Then For i = 1 To level(l) If npc_typ1(i,0) <> -1 Then npc_typ1(i,3) = Rand(1,30) Next EndIf Next ;LASER ABFRAGE UND ABSCHUSS DER NPC LASER DES TYP 1 For l = 1 To 10 If level_aktiv = l Then For i = 1 To level(l) If npc_typ1(i,3) = 1 Then If MilliSecs()-laser_verzoegerung > 250 Then ;alle 150msecs schuss moeglich npc_laser_typ1_zaehler = npc_laser_typ1_zaehler + 1 laser_verzoegerung = MilliSecs() ;nach schuss wird zeit "gestoppt" If npc_laser_typ1_zaehler > 249 Then npc_laser_typ1_zaehler = 1 npc_laser_typ1(npc_laser_typ1_zaehler,0) = 1 npc_laser_typ1(npc_laser_typ1_zaehler,1) = npc_typ1(i,1) npc_laser_typ1(npc_laser_typ1_zaehler,2) = npc_typ1(i,2) soundchannel = PlaySound(laserton) EndIf EndIf Next EndIf Next ;BEWEGUNG DER NPC LASER DES TYP 1 For i=1 To 250 If npc_laser_typ1(i,2) > 600 Then npc_laser_typ1(i,0) = 0 ;laser aus der bildflaeche? -> loeschen If npc_laser_typ1(i,0) = 1 Then DrawImage laser_gfx, npc_laser_typ1(i,1), npc_laser_typ1(i,2) ;laser zeichnen npc_laser_typ1(i,2) = npc_laser_typ1(i,2) + 8 ;geschwindigkeit des lasers: 8 EndIf Next ;############################ KOLLISIONEN ############################ ;KOLLISION DER NPCSCHIFFE MIT DEM SPIELERSCHIFF For j = 1 To 20 If ImagesCollide(spieler\grafik,spieler\x,spieler\y,0,npc_schiff,npc_typ1(j,1),npc_typ1(j,2),0) Then If npc_typ1(j,0) <> -1 Then spieler\hp = spieler\hp - 33 npc_typ1(j,0) = -1 EndIf Next ;WAFFENKOLLISION - LASER MIT NPC For j = 1 To 75 If laser(j,0) > 0 Then For i = 1 To 20 If ImagesCollide(npc_schiff,npc_typ1(i,1),npc_typ1(i,2),0,laser_gfx,laser(j,1),laser(j,2),0) Then laser(j,0) = 0 npc_typ1(i,4) = npc_typ1(i,4) - 40 If npc_typ1(i,4) = 0 Or npc_typ1(i,4) < 0 Then npc_typ1(i,0) = -1 ;kollision -> explosionsstatus ElseIf npc_typ1(i,4) > 0 Then explosion_npctreffer_status(i) = 1 EndIf EndIf Next EndIf Next ;WAFFENKOLLISION - RAKETEN MIT NPC For j = 1 To 75 If raketen(j,0) > 0 Then For i = 1 To 20 If ImagesCollide(npc_schiff,npc_typ1(i,1),npc_typ1(i,2),0,raketen_gfx,raketen(j,1),raketen(j,2),0) Then raketen(j,0) = 0 npc_typ1(i,4) = npc_typ1(i,4) - 120 If npc_typ1(i,4) = 0 Or npc_typ1(i,4) < 0 Then npc_typ1(i,0) = -1 ;kollision -> explosionsstatus ElseIf npc_typ1(i,4) > 0 Then explosion_npctreffer_status(i) = 1 EndIf EndIf Next EndIf Next ;WAFFENKOLLISION - NPC LASER DES TYP 1 MIT SPIELER For j = 1 To 250 If npc_laser_typ1(j,0) > 0 Then If ImagesCollide(spieler\grafik,spieler\x,spieler\y,0,laser_gfx,npc_laser_typ1(j,1),npc_laser_typ1(j,2),0) Then npc_laser_typ1(j,0) = 0 If spieler\schild_mp > 0 Then spieler_schildanzeige_zeit = MilliSecs() spieler_schildanzeige = 1 spieler\schild_mp = spieler\schild_mp - 25 ElseIf spieler\schild_mp = 0 Or spieler\schild_mp < 0 Then spieler\hp = spieler\hp - 33 ;kollision -> abziehen der HP explosion_spielertreffer_status = 1 EndIf soundchannel = PlaySound(lasertrefferton) EndIf EndIf Next If spieler\hp = 0 Then spieler_explodiert = 1 ;RANDKOLLISION DES SPIELER SCHIFFES If spieler\x > 765 Then spieler\x = 765 ;RECHTER RAND If spieler\x < 0 Then spieler\x = 0 ;LINKER RAND If spieler\y < 0 Then spieler\y = 0 ;OBERER RAND If spieler\y > 570 Then spieler\y = 570 ;UNTERER RAND ;############################ NPCS UND AEHNLICHES INITIALISIEREN ############################ ;NPC TYP 1 INITIALISIEREN For i = 1 To 10 If level_aktiv = i Then For j = 1 To level(i) If npc_typ1(j,0) = 0 Then npc_typ1(j,0) = Rand(90,410) ;festlegung der sinus kurve -> npc bewegung auf der x-achse npc_typ1(j,1) = Rand(-20,800) ;festlegung der startposition (x-achse) npc_typ1(j,2) = Rand(-100,-25) ;festlegung der startposition (y-achse) EndIf If npc_typ1(j,0) <> -1 Then npc_typ1(j,2) = npc_typ1(j,2) + 0.75 ;bewegung des npcs auf der y-achse npc_typ1(j,1) = 400 + Sin(npc_typ1(j,2)) * npc_typ1(j,0) ;bewegung des npcs auf der x-achse per sinus kurve EndIf If npc_typ1(j,2) > 600 Then spieler\punkte = spieler\punkte - 2 If spieler\punkte < 0 Then spieler\punkte = 0 npc_typ1(j,0) = 0 ;verschwinden eines npcs EndIf If npc_typ1(j,0) <> - 1 Then DrawImage npc_schiff,npc_typ1(j,1),npc_typ1(j,2) ;npc typ 1 zeichnen Next EndIf Next ;############################ EFFEKTE ############################ ;EXPLOSION TREFFER - NPC LASER MIT SPIELER If spieler_explodiert = 0 Then If explosion_spielertreffer_status = 1 Then ;explosionsstatus? -> ... If spieler\explosion_treffer[1] + 40 < MilliSecs() Then ;je 40msecs ein frame spieler\explosion_treffer[0] = spieler\explosion_treffer[0] + 1 spieler\explosion_treffer[1] = MilliSecs() If spieler\explosion_treffer[0] = 20 Then ;waehrend explosion spieler\explosion_treffer[0] = 0 spieler\explosion_treffer[1] = 0 explosion_spielertreffer_status = 0 EndIf EndIf DrawImage explosion_treffer_gfx,spieler\x+5,spieler\y+3,spieler\explosion_treffer[0] ;explosion zeichnen EndIf EndIf ;EXPLOSION TREFFER - SPIELER LASER MIT NPC For i = 1 To 20 If npc_typ1(i,0) <> -1 Then If explosion_npctreffer_status(i) = 1 Then ;explosionsstatus? -> ... If explosion_npctreffer(i,1) + 40 < MilliSecs() Then ;je 40msecs ein frame explosion_npctreffer(i,0) = explosion_npctreffer(i,0) + 1 explosion_npctreffer(i,1) = MilliSecs() If explosion_npctreffer(i,0) = 20 Then ;waehrend explosion explosion_npctreffer(i,0) = 0 explosion_npctreffer(i,1) = 0 explosion_npctreffer_status(i) = 0 EndIf EndIf DrawImage explosion_treffer_gfx,npc_typ1(i,1)+5,npc_typ1(i,2)+5,explosion_npctreffer(i,0) ;explosion zeichnen EndIf EndIf Next ;EXPLOSION NPCSCHIFF For i=1 To 20 If npc_typ1(i,0) = -1 Then ;explosionsstatus? -> ... If npc_typ1_explodiert(i,1) + 40 < MilliSecs() Then ;je 40msecs ein frame npc_typ1_explodiert(i,0) = npc_typ1_explodiert(i,0) + 1 npc_typ1_explodiert(i,1) = MilliSecs() If npc_typ1_explodiert(i,0) = 1 Then PlaySound(explosion_schiff_sfx) If npc_typ1_explodiert(i,0) = 20 Then ;waehrend explosion npc_typ1_explodiert(i,0) = 0 npc_typ1_explodiert(i,1) = 0 npc_typ1(i,4) = 100 npc_typ1(i,0) = 0 ;npc schiff löschen spieler\punkte = spieler\punkte + 5 ;gegner abgeschossen -> punkte++ anzahl_abgeschossener_npcs = anzahl_abgeschossener_npcs + 1 If anzahl_abgeschossener_npcs = level_aktiv + 4 Then level_aktiv = level_aktiv + 1 If level_aktiv = 11 Then GESCHAFFT() EndIf anzahl_abgeschossener_npcs = 0 EndIf EndIf EndIf DrawImage explosion_schiff_gfx,npc_typ1(i,1)-55,npc_typ1(i,2)-50,npc_typ1_explodiert(i,0) ;explosion zeichnen EndIf Next ;EXPLOSION SPIELERSCHIFF If spieler_explodiert = 1 Then ;explosionsstatus? -> ... If spieler\explosion_schiff[1] + 40 < MilliSecs() Then ;je 40msecs ein frame spieler\explosion_schiff[0] = spieler\explosion_schiff[0] + 1 spieler\explosion_schiff[1] = MilliSecs() If spieler\explosion_schiff[0] = 1 Then PlaySound(explosion_schiff_sfx) If spieler\explosion_schiff[0] = 20 Then ;waehrend explosion spieler\explosion_schiff[0] = 0 spieler\explosion_schiff[1] = 0 spieler_explodiert = 2 EndIf EndIf DrawImage explosion_schiff_gfx,spieler\x-55,spieler\y-50,spieler\explosion_schiff[0] ;explosion zeichnen EndIf ;############################ VIEL SPAß ANZEIGE ############################ If MilliSecs()-HF_timer < 3000 Then Text (RESOLUTION_X/2)-10,(RESOLUTION_Y/2)-50,"Viel Spaß!",1,1 ;############################ LAUTSTAERKE MIT '+' BZW. '-' REGELN ############################ LAUTSTAERKE_IG() ;############################ SCREENSHOTS MIT F5 TASTE ############################ SCREENSHOTS_IG() ;############################ SPIELER HIGHSCORE ############################ highscore_liste(10) = spieler\punkte WaitTimer gametimer ;auf timer warten (65) Flip ;bildschirmseiten tauschen Until KeyHit(1) Or spieler_explodiert = 2 Or menue_auswahl = 10 ;-------------------- HAUPTSPIELSCHLEIFE-ENDE -------------------- End Function Function VARIABLEN_ZURUECKSETZEN() ;VARIABLEN ZURUECKSETZEN menue_auswahl = 0 spieler_explodiert = 0 level_aktiv = 1 raketen_delay_balken = 100 anzahl_abgeschossener_npcs = 0 spieler_schildanzeige = 0 explosion_spielertreffer_status = 0 For i = 1 To 20 npc_typ1(i,0) = 0 Next For i = 1 To 75 laser(i,0) = 0 raketen(i,0) = 0 Next For i = 1 To 3 planet(i,0) = 0 Next For i = 1 To 250 npc_laser_typ1(i,0) = 0 Next End Function Function PAUSENABFRAGE() ;PAUSE MIT 'P' ODER 'PAUSE' TASTE; FORTSETZEN MIT F ODER W TASTE If KeyDown(197) Or KeyDown(25) Then soundchannel = PlaySound(pause_sfx) Repeat Text RESOLUTION_X/2,RESOLUTION_Y/2,"PAUSE - FORTSETZEN MIT F- oder W-TASTE",1,1 Flip FlushKeys pausetaste = WaitKey() Until pausetaste = 70 Or pausetaste = 78 Or pausetaste = 102 Or pausetaste = 119 EndIf End Function Function PLANETEN() ;PLANETEN ZEICHNEN For i = 1 To 3 If planet(i,0) = 0 Then planet(i,0) = Rand(1,10) planet(i,1) = 0 planet(i,1) = Rand(50,750) planet(i,2) = 0 planet(i,2) = Rand(-350,-200) planet(i,3) = 0 planet(i,3) = Rand(1,3) EndIf planet(i,2) = planet(i,2) + 1 If planet(i,0) < 7 And planet(i,0) > 0 Then For j = 1 To 9 If planet(i,3) = j Then DrawImage planeten_gfx(j),planet(i,1),planet(i,2) Next EndIf If planet(i,2) > 600 Then planet(i,0) = 0 Next End Function Function ANZEIGEN_REGENERATIONEN(spieler.T_Spieler) ;ANZEIGE DES SCHILDENERGIEBALKENS Rect 100,505,600,10,0 spieler\schild_mp_balken = spieler\schild_mp * 6 ;100 * 6 um die laenge (600) zu kompensieren Color 0,125,0 Rect 100,505,spieler\schild_mp_balken,10,1 Color 255,255,255 SetFont FONT_comic_sans_ms_skl Text 400,509,"Schildenergie",1,1 SetFont FONT_comic_sans_ms ;ANZEIGE DES LEBENSENERGIEBALKENS Rect 100,520,600,10,0 spieler\hp_balken = spieler\hp * 6 ;100 * 6 um die laenge (600) zu kompensieren Color 255,0,0 Rect 100,520,spieler\hp_balken,10,1 Color 255,255,255 SetFont FONT_comic_sans_ms_skl Text 400,524,"Lebensenergie",1,1 SetFont FONT_comic_sans_ms ;ANZEIGE DES ENERGIEBALKENS Rect 100,535,600,10,0 spieler\mp_balken = spieler\mp * 6 ;100 * 6 um die laenge (600) zu kompensieren Color 0,0,255 Rect 100,535,spieler\mp_balken,10,1 Color 255,255,255 SetFont FONT_comic_sans_ms_skl Text 400,539,"Waffenenergie",1,1 SetFont FONT_comic_sans_ms ;ANZEIGE DES RAKETENSTATUS-BALKENS Rect 625,35,100,25,0 Color 0,255,0 raketen_delay_balken = raketen_aufgeladen * 2 Rect 625,35,raketen_delay_balken,25,1 Color 255,255,255 ;ANZEIGE DES NACHBRENNER STATUSBALKENS Rect 75,35,100,25,0 Color 112,0,238 spieler\nachbrenner_mp_balken = spieler\nachbrenner_mp Rect 75,35,spieler\nachbrenner_mp_balken,25,1 Color 255,255,255 ;ANZEIGE DES LAUTSTAERKE BALKENS Rect 775,150,10,200,0 Color 200,100,100 Rect 775,150,10,lautstaerke*200,1 Color 255,255,255 SetFont FONT_comic_sans_ms_kl Text 780,180,"-",1,1 Text 780,320,"+",1,1 SetFont FONT_comic_sans_ms ;SCHILD REGENERATION If spieler\schild_mp > 0 Then spieler\schild_mp = spieler\schild_mp + 0.025 If spieler\schild_mp <= 0 Then spieler\schild_mp = 0 schildleer_zeit = MilliSecs() EndIf If spieler\schild_mp > 100 Then spieler\schild_mp = 100 ElseIf spieler\schild_mp <= 0 And MilliSecs()-schildleer_zeit > 10000 Then spieler\schild_mp = spieler\schild_mp + 0.025 EndIf ;ENERGIE REGENERATION spieler\mp = spieler\mp + 0.75 If spieler\mp < 0 Then spieler\mp = 0 If spieler\mp > 100 Then spieler\mp = 100 ;NACHBRENNERENERGIE REGENERATION spieler\nachbrenner_mp = spieler\nachbrenner_mp + 0.15 If spieler\nachbrenner_mp < 0 Then spieler\nachbrenner_mp = 0 If spieler\nachbrenner_mp > 100 Then spieler\nachbrenner_mp = 100 ;LEBENSENERGIE REGENERATION If spieler\schild_mp = 0 Then If spieler_explodiert = 0 Then spieler\hp = spieler\hp + 0.005 If spieler\hp < 0 Then spieler\hp = 0 If spieler\hp > 100 Then spieler\hp = 100 EndIf ;ANZEIGE DER RAKETENMUNITION, PUNKTE Text 75,100,"Raketen uebrig: " + spieler\raketen_munition Text 75,125,"Punkte: " + spieler\punkte Text 665,5,"Raketen-Aufladungsstatus",1,0 Text 125,5,"Nachbrenner-Status",1,0 SetFont FONT_comic_sans_ms_kl Text RESOLUTION_X/2,25,"Level " + level_aktiv,1,1 SetFont FONT_comic_sans_ms End Function Function SPIELERSCHIFF_SCHILD_BEWEGUNG(spieler.T_Spieler) ;SCHILD ZEICHNEN FALLS STATUS = 1 If spieler_schildanzeige = 1 And MilliSecs()-spieler_schildanzeige_zeit < 450 Then Color 0,125,0 Oval spieler\x-9, spieler\y-13, 50, 75 Color 255,255,255 EndIf ;SPIELERSCHIFF ZEICHNEN If spieler_explodiert = 0 Then DrawImage spieler\grafik,spieler\x,spieler\y EndIf ;SPIELER SCHIFF BEWEGEN If spieler_explodiert = 0 Then If KeyDown(203) Then spieler\x = spieler\x - 5 ;PFEIL LINKS If KeyDown(205) Then spieler\x = spieler\x + 5 ;PFEIL RECHTS If KeyDown(200) Then spieler\y = spieler\y - 3 ;PFEIL OBEN If KeyDown(208) Then spieler\y = spieler\y + 2 ;PFEIL UNTEN If KeyDown(15) And spieler\nachbrenner_mp > 2.5 Then spieler\y = spieler\y -7 spieler\nachbrenner_mp = spieler\nachbrenner_mp - 2.5 EndIf EndIf End Function Function LAUTSTAERKE_IG() ;LAUTSTAERKE MIT '+' BZW. '-' TASTEN ERHOEHEN BZW. VERRINGERN If KeyHit(78) Then lautstaerke = lautstaerke + 0.1 ;erhoehen If KeyHit(74) Then lautstaerke = lautstaerke - 0.1 ;verringern If lautstaerke > 1.0 Then lautstaerke = 1.0 If lautstaerke < 0.0 Then lautstaerke = 0.0 ChannelVolume soundchannel,lautstaerke End Function Function SCREENSHOTS_IG() Local temp_currentdir$ = CurrentDir$() Local screenshot_ordnername$ = "\screenshots" Local screen_msg = 0 ;SCREENSHOT MIT 'F5' TASTE If KeyHit(63) Then If CurrentDir$() <> (temp_currentdir$ + screenshot_ordnername$) Then CreateDir temp_currentdir$ + screenshot_ordnername$ ChangeDir temp_currentdir EndIf screen_msg = MilliSecs() screenshot = screenshot + 1 SaveBuffer(FrontBuffer(),temp_currentdir$ + "\screenshots\screenshot" + Str$(screenshot) + ".bmp") If MilliSecs()-screen_msn < 2500 Then Text RESOLUTION_X/2,RESOLUTION_Y/2,"SCREENSHOT GESPEICHERT",1,1 EndIf End Function Function MENUE_STERNEZEICHNEN() For i=1 To 500 If menue_sterne1(i,0) = 0 Then menue_sterne1(i,0) = 1 menue_sterne1(i,1) = Rand(RESOLUTION_X) menue_sterne1(i,2) = Rand(RESOLUTION_Y) EndIf Plot menue_sterne1(i,1),menue_sterne1(i,2) menue_sterne1(i,1) = menue_sterne1(i,1) + 0.5 menue_sterne1(i,2) = menue_sterne1(i,2) + 0.5 If menue_sterne1(i,1) > 800 Then menue_sterne1(i,0) = 0 If menue_sterne1(i,1) < 0 Then menue_sterne1(i,0) = 0 If menue_sterne1(i,2) > 600 Then menue_sterne1(i,0) = 0 If menue_sterne1(i,2) < 0 Then menue_sterne1(i,0) = 0 Next End Function Function MENUE_CREDITS() Text 400,200,"Programmiert von: Christian Laufer",1,0 Text 400,250,"Zap v1.0",1,0 Text 400,300,"Alle verwendeten Grafiken und Sounds sind Freeware",1,0 Text 400,350,"und stammen vom Inhalt der Buch-CD von René Meyers Buch: ",1,0 Text 400,400,"'Spiele programmieren mit Blitz Basic'!",1,0 Color 0,0,150 Rect (RESOLUTION_X/2)-75,500,150,40,0 Color 255,255,255 If ImageRectOverlap(cursor_gfx,MAUS_X,MAUS_Y,(RESOLUTION_X/2)-75,500,150,40) Then Color 0,0,255 Rect (RESOLUTION_X/2)-75,500,150,40,1 Color 255,255,255 If MouseHit(1) Then zurueck_button_overlap = 1 EndIf Text RESOLUTION_X/2,520,"Zurueck",1,1 If KeyHit(14) Or zurueck_button_overlap = 1 Then credits = 0 menue_auswahl = 0 EndIf End Function Function MENUE_STEUERUNG() Text 400,150,"Steuerung",1,0 SetFont FONT_comic_sans_ms_kl Text 300,200,"Laser abfeuern: Leertaste" Text 300,225,"Rakete abfeuern: ALT oder ALT Gr" Text 300,250,"Steuerung OBEN: Pfeiltaste oben" Text 300,275,"Steuerung UNTEN: Pfeiltaste unten" Text 300,300,"Steuerung LINKS: Pfeiltaste links" Text 300,325,"Steuerung RECHTS: Pfeiltaste rechts" Text 300,350,"Spiel pausieren: Pause oder P" Text 300,375,"Nachbrenner: Tabulator" Text 300,400,"Spiel Screenshot: F5" Text 300,425,"Lautstaerke erhoehen: +" Text 300,450,"Lautstaerke verringern: -" SetFont FONT_comic_sans_ms Color 0,0,150 Rect (RESOLUTION_X/2)-75,500,150,40,0 Color 255,255,255 If ImageRectOverlap(cursor_gfx,MAUS_X,MAUS_Y,(RESOLUTION_X/2)-75,500,150,40) Then Color 0,0,255 Rect (RESOLUTION_X/2)-75,500,150,40,1 Color 255,255,255 If MouseHit(1) Then zurueck_button_overlap = 1 EndIf Text RESOLUTION_X/2,520,"Zurueck",1,1 If KeyHit(14) Or zurueck_button_overlap = 1 Then steuerung = 0 menue_auswahl = 0 EndIf End Function Function MENUE_HIGHSCORES(spieler.T_Spieler) Local TEMP_HIGHSCORES = 0 Local HIGHSCORE_PLATZ_TEXT$ = "" Text 400,150,"Highscores",1,0 SetFont FONT_comic_sans_ms_kl For i = 1 To 9 If highscore_liste(i) < highscore_liste(i+1) Then TEMP_HIGHSCORES = highscore_liste(i) highscore_liste(i) = highscore_liste(i+1) highscore_liste(i+1) = TEMP_HIGHSCORES EndIf Next For i = 1 To 10 If highscore_liste(i) = spieler\punkte Then HIGHSCORE_PLATZ_TEXT = "Spieler - Platz " Else HIGHSCORE_PLATZ_TEXT = "Computer - Platz " EndIf If i = 1 Then Text 400,225,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 2 Then Text 400,250,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 3 Then Text 400,275,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 4 Then Text 400,300,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 5 Then Text 400,325,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 6 Then Text 400,350,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 7 Then Text 400,375,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 8 Then Text 400,400,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 9 Then Text 400,425,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 If i = 10 Then Text 400,450,HIGHSCORE_PLATZ_TEXT + i + ": " + highscore_liste(i),1,1 Next SetFont FONT_comic_sans_ms Color 0,0,150 Rect (RESOLUTION_X/2)-75,500,150,40,0 Color 255,255,255 If ImageRectOverlap(cursor_gfx,MAUS_X,MAUS_Y,(RESOLUTION_X/2)-75,500,150,40) Then Color 0,0,255 Rect (RESOLUTION_X/2)-75,500,150,40,1 Color 255,255,255 If MouseHit(1) Then zurueck_button_overlap = 1 EndIf Text RESOLUTION_X/2,520,"Zurueck",1,1 If KeyHit(14) Or zurueck_button_overlap = 1 Then highscores = 0 menue_auswahl = 0 EndIf End Function Function GESCHAFFT() menue_auswahl = 9 If menue_auswahl = 9 Then Cls Text 400,175,"Du hast es geschafft, Du hast das letzte Level passiert!",1,1 Text 400,200,"Herzlichen Glückwunsch!",1,1 Text 400,250,"Vielen Dank, dass Du 'Zap' gespielt hast, ",1,1 Text 400,275,"ich hoffe, es hat Dir Spaß gemacht!",1,1 Text 400,325,"Hast du Dich für den Highscore qualifiziert? Sieh nach!",1,1 Text 400,500,"Taste drücken um zum Menü zurückzukehren. . .",1,1 Flip Delay 2000 FlushKeys WaitKey() menue_auswahl = 10 EndIf End Function wie gesagt, lange.. gruß, caesium |
||
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group