was is hier falsch

Übersicht BlitzBasic Beginners-Corner

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

 

der anfänger

Betreff: was is hier falsch

BeitragFr, Mai 02, 2008 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Type RaumTyp
Field Name$
Field Nr
Field Richtung[3]
End Type
Type SpielerTyp
Field Name$
Field Ort
Field Leben
End Type
Type GegenstandTyp
Field Name$
Field Nr
Field Ort
End Type



Const Nord=0
Const Sued=1
Const West=2
Const Ost =3

Const AdvKennung$="MiniAdvSpiel"

Global RichtungsName$[3]
RichtungsName[0]=" Norden"
RichtungsName[1]=" Süden"
RichtungsName[2]=" Westen"
RichtungsName[3]=" Osten"

Type RaumTyp
Field Name$
Field Nr
Field Richtung[3]
End Type

Type SpielerTyp
Field Name$
Field Ort
Field Leben
End Type

Type GegenstandTyp
Field Name$
Field Nr
Field Ort
End Type

Global Raum.RaumTyp
Global Spieler.SpielerTyp
Global Gegenstand.GegenstandTyp

Const Gegenstand_Hat_Spieler=0
Const Keine_Tuer=0

; Name$ Nr ,N ,S ,W ,O

CreateRaum "Ziel" ,-1 , 0, 0, 0, 0
CreateRaum "Küche" , 4 , 0, 3, 0,-1
CreateRaum "Stube" , 3 , 4, 0, 0, 2
CreateRaum "BadeZimmer", 2 , 0, 0, 3, 1
CreateRaum "Keller" , 1 ,-2, 0, 2,-3
CreateRaum "Abgrund" ,-2 , 0, 0, 0, 0
CreateRaum "Teufel" ,-3 , 0, 0, 0, 0

CreateGegenstand "Schweizer Taschenmesser",1,Gegenstand_Hat_Spieler
CreateGegenstand "Kochtopf" ,2,4
CreateGegenstand "Foto" ,3,3

SpielerName$=Input("Name: ")

CreateSpieler SpielerName$,2,3

Graphics 640,480,0,2

Spiel

Function Spiel()
Repeat
SpielerInfo

Eingabe$=Input$()

verb$=Mid$(Eingabe$,1,Instr(Eingabe$+" ", " ")-1)
objekt$=Mid$(Eingabe$,Instr(Eingabe$+" ", " ")+1)

Select Lower$(verb$)
Case "n","8"
SpielerGeheNach Nord
Case "s","2"
SpielerGeheNach Sued
Case "w","4"
SpielerGeheNach West
Case "o","6"
SpielerGeheNach Ost

Case "gehe"
Select Lower$(objekt$)
Case "nord"
SpielerGeheNach Nord
Case "süd", "sued"
SpielerGeheNach Sued
Case "west"
SpielerGeheNach West
Case "ost"
SpielerGeheNach Ost
End Select

Case "save","speichern","speicher"
SpielSpeichern objekt$

Case "speichereals"
If Len(objekt$)>0 Then
SpielSpeichern objekt$
EndIf

Case "load","laden","lade"
SpielLaden objekt$

Case "nimm"
Nimm objekt$

Case "leg"
Leg objekt$

Case "inventar"
inventar
Case "end","ende"
Case "help","hilfe","?"
End Select
Forever
End Function

Function Hilfe()
Print "Mein Befehlswortschatz umfasst folgende Kommandos:"
Print "gehe nord|süd|west|ost oder Abkürzung n|s|w|o"
Print "nimm|leg <Gegenstand>"
Print "inventar|hilfe"
Print "speichereals|lade <dateiname.erw>"
End Function

Function SpielLaden(objekt$)
If Len(objekt$)>0 Then
If Instr(objekt$,".")>0 Then
FileNr=ReadFile(objekt$)
Else
FileNr=ReadFile(objekt$+".dat")
EndIf
EndIf

If FileNr=0 Then
FileNr=ReadFile("Save.dat")
EndIf

If FileNr<>0 Then
If Not Eof(FileNr) Then
Kennung$=ReadLine(FileNr)
EndIf

If Kennung$=AdvKennung$ Then
If Not Eof(FileNr) Then
SpeicherArt$=Upper$(ReadLine(FileNr))
EndIf

If SpeicherArt$="BIN" Or SpeicherArt$="ASC" Then

For Raum =Each RaumTyp
Delete Raum
Next

For Gegenstand=Each GegenstandTyp
Delete Gegenstand
Next

For Spieler=Each SpielerTyp
Delete Spieler
Next

RaumName$=ReadLine(FileNr)

While Len(RaumName$)>0
Raum =New RaumTyp
Raum\Name$ = RaumName$

Select SpeicherArt$
Case "BIN"
Raum\Nr = ReadInt(FileNr)
Raum\Richtung[0]= ReadInt(FileNr)
Raum\Richtung[1]= ReadInt(FileNr)
Raum\Richtung[2]= ReadInt(FileNr)
Raum\Richtung[3]= ReadInt(FileNr)
Case "ASC"
Raum\Nr = ReadLine(FileNr)
Raum\Richtung[0]= ReadLine(FileNr)
Raum\Richtung[1]= ReadLine(FileNr)
Raum\Richtung[2]= ReadLine(FileNr)
Raum\Richtung[3]= ReadLine(FileNr)
End Select

RaumName$ = ReadLine(FileNr)
Wend

GegenstandName$=ReadLine(FileNr)
While Len(GegenstandName$)>0
Gegenstand=New GegenstandTyp

Gegenstand\Name$= GegenstandName$

Select SpeicherArt$
Case "BIN"
Gegenstand\Nr = ReadInt(FileNr)
Gegenstand\Ort = ReadInt(FileNr)
Case "ASC"
Gegenstand\Nr = ReadLine(FileNr)
Gegenstand\Ort = ReadLine(FileNr)
End Select

GegenstandName$ = ReadLine(FileNr)
Wend

SpielerName$=ReadLine(FileNr)
While Len(SpielerName$)>0
Spieler= New SpielerTyp

Spieler\Name$=SpielerName$

Select SpeicherArt$
Case "BIN"
Spieler\Ort = ReadInt(FileNr)
Spieler\Leben= ReadInt(FileNr)
Case "ASC"
Spieler\Ort = ReadLine(FileNr)
Spieler\Leben= ReadLine(FileNr)
End Select

SpielerName$ = ReadLine(FileNr)
Wend
Spieler=First SpielerTyp
EndIf
Cls
Locate 0,0
Print "Spielstand geladen!"
Print ""
EndIf
CloseFile FileNr
EndIf
End Function

Function SpielSpeichern(objekt$)
If Len(objekt$)>0 Then
If Instr(objekt$,".")>0 Then
FileNr=WriteFile(objekt$)
Else
FileNr=WriteFile(objekt$+".dat")
EndIf
EndIf

If FileNr=0 Then
FileNr=WriteFile("Save.dat")
EndIf

If FileNr<>0 Then
WriteLine FileNr,AdvKennung$
WriteLine FileNr,"BIN"

For Raum =Each RaumTyp
WriteLine FileNr, Raum\Name$
WriteInt FileNr, Raum\Nr
WriteInt FileNr, Raum\Richtung[0]
WriteInt FileNr, Raum\Richtung[1]
WriteInt FileNr, Raum\Richtung[2]
WriteInt FileNr, Raum\Richtung[3]
Next
WriteLine FileNr,""

For Gegenstand=Each GegenstandTyp
WriteLine FileNr, Gegenstand\Name$
WriteInt FileNr, Gegenstand\Nr
WriteInt FileNr, Gegenstand\Ort
Next
WriteLine FileNr,""

For Spieler=Each SpielerTyp
If Spieler\Name$="" Then
WriteLine FileNr, "Spieler"
Else
WriteLine FileNr, Spieler\Name$
EndIf

WriteInt FileNr, Spieler\Ort
WriteInt FileNr, Spieler\Leben
Next
WriteLine FileNr,""

Spieler=First SpielerTyp
CloseFile FileNr

Print "Spielstand gespeichert!"
Print ""
EndIf
End Function

Function SpielerInfo()
For Raum=Each RaumTyp
If Raum\Nr=Spieler\Ort Then
Print "Sie befinden sich im/in der "+Raum\Name$
Print "Mögliche Gehrichtungen:"

For Richtung=0 To 3
If Raum\Richtung[Richtung]<>Keine_Tuer Then
Print RichtungsName[Richtung]
End If
Next

Print
Print "Gegenstände in diesem Raum:";

For Gegenstand=Each GegenstandTyp
If Spieler\Ort=Gegenstand\Ort Then
Print " "+ Gegenstand\Name$
GegenstandZahl = GegenstandZahl+1
End If
Next

If GegenstandZahl = 0 Then
Print " keine"
End If

End If
Next
End Function

Function Nimm(objekt$)
For Gegenstand=Each GegenstandTyp
If Lower$(Gegenstand\Name$)=Lower$(objekt$) Then
If Gegenstand\Ort=Spieler\Ort Then
Gegenstand\Ort=Gegenstand_Hat_Spieler
Print Gegenstand\Name$+ " aufgelesen"
End If
End If
Next
End Function

Function Leg(objekt$)
For Gegenstand=Each GegenstandTyp
If Lower$(Gegenstand\Name$)=Lower$(objekt$) Then
If Gegenstand\Ort=Gegenstand_Hat_Spieler Then
Gegenstand\Ort=Spieler\Ort
Print Gegenstand\Name$+ " abgelegt"
End If
End If
Next
End Function

Function inventar()
For Gegenstand=Each GegenstandTyp
If Gegenstand_Hat_Spieler=Gegenstand\Ort Then
Print " "+ Gegenstand\Name$
GegenstandZahl = GegenstandZahl+1
End If
If GegenstandZahl = 0 Then
Print " keine"
End If
Next
End Function

Function SpielerGeheNach(Richtung)
For Raum=Each RaumTyp
If Raum\Nr=Spieler\Ort Then
If Raum\Richtung[Richtung]<>Keine_Tuer Then
Spieler\Ort=Raum\Richtung[Richtung]
End If
End If
Next
End Function

Function DeleteGegenstand(Name$)
For Gegenstand=Each GegenstandTyp
If Gegenstand\Name$=Name$ Then
Delete Gegenstand
Exit
EndIf
Next
End Function

Function CreateGegenstand(Name$,Nr,Ort)
Gegenstand=New GegenstandTyp

Gegenstand\Name$=Name$
Gegenstand\Nr =Nr
Gegenstand\Ort =Ort
End Function

Function CreateSpieler(Name$,Ort,Leben)
Spieler=New SpielerTyp

Spieler\Name$=Name$
Spieler\Ort =Ort
Spieler\Leben=Leben
End Function

Function CreateRaum(Name$,Nr,Richtung_Nord,Richtung_Sued,Richtung_West,Richtung_Ost)
Raum=New RaumTyp
Raum\Name$ =Name$
Raum\Nr =Nr
Raum\Richtung[Nord] =Richtung_Nord
Raum\Richtung[Sued] =Richtung_Sued
Raum\Richtung[West] =Richtung_West
Raum\Richtung[Ost ] =Richtung_Ost
End Function
 

der anfänger

BeitragFr, Mai 02, 2008 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
es geht irgendwie net Question Question Exclamation
 

Dreamora

BeitragFr, Mai 02, 2008 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Code Tags bitte nutzen
2. Titel künftig aussagekräftige titel geben die dein problem "beschreiben", sonst wird er direkt getrasht, weil andere ihn sonst nicht finden wenn sie das gleiche problem haben, er also für die community keine bedeutung hat.
3. Was geht genau nicht.
Wenn du nicht sagen kannst was nicht geht und was es machen soll können wir dir nicht helfen, wir sind keine hellseher.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Blitzprogger

BeitragFr, Mai 02, 2008 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
es wird zweimal ein gleicher typ erstellt (hier sind es jetzt: RaumTyp,SpielerTyp und GegenstandTyp) diese types (ganz oben bei dir) einfach löschen

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink
 

der anfänger

BeitragFr, Mai 02, 2008 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ôke mod in zukunft werde ich den perfeckten titel schreiben





also dann soll ich das so eingeben???


RaumTyp
Field Name$
Field Nr
Field Richtung[3]
End Type
SpielerTyp
Field Name$
Field Ort
Field Leben
End Type
GegenstandTyp
Field Name$
Field Nr
Field Ort
End Type

Der Eisvogel

BeitragFr, Mai 02, 2008 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein!
Und benutzte doch bitte, bitte die Code-Tags!
Unter den Smileys steht "Code". Da musst du drauf klicken, deinen Code eingeben und nochmals draufklicken.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

Lador

BeitragFr, Mai 02, 2008 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Also:

Code: [AUSKLAPPEN]
Type RaumTyp
Field Name$
Field Nr
Field Richtung[3]
End Type
Type SpielerTyp
Field Name$
Field Ort
Field Leben
End Type
Type GegenstandTyp
Field Name$
Field Nr
Field Ort
End Type


Sieht doch schon viel besser aus mit Code-Tags...^^

Er meinte nur, dass du die ganzen drei Types zweimal erstellst. Unnötig. Tipp nebenbei: statt SpielerTyp kannst du auch TSpieler schreiben (das T steht hier für Typ/Type). Ist kürzer, hat außerdem den Vorteil, dass du eine Variable "Spieler" nennen könntest (was aber bei SpielerTyp auch der Fall ist^^). Und wie Dremora sagte: schildere doch mal dein Problem (am besten detailreich, genau...). Welche Fehlermeldung kommt denn? Kommt überhaupt eine? Sonst brauchst du von uns wenig Hilfe erwarten...

Ansonsten: Code-Tags!^^

MFG Lador
 

der anfänger

BeitragSa, Mai 03, 2008 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
oh oke thx

BladeRunner

Moderator

BeitragSa, Mai 03, 2008 1:55
Antworten mit Zitat
Benutzer-Profile anzeigen
~GESCHLOSSEN~


wie angekündigt geschlossen. Threadtitel fürn Arsch und du solltest lernen die Codetags zu nutzen. Doppelposts sind auch daneben.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group