Attribut änderung will und will nicht funktionieren

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Noobfire

Betreff: Attribut änderung will und will nicht funktionieren

BeitragDo, Jul 03, 2008 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo erstmal hier aufm Forum ! Ist mein erster und gleich verzweifelter Beitrag zur Community.
Ich nutze Blitz 3D Vollversion. Ich möchte mir gerne ein Text/Bild RPG machen. Habe erst sehr wenige Schritte gemacht. Ich hab einen Button, wo ich draufdrücken kann der Neues Spiel heißt, dann kommt Namensabfrage. Danach soll man seinen Spieler erstellen. Dazu habe ich schon vorher Standartattribute erstellt.
Code: [AUSKLAPPEN]

Dim attr(7)

attr(0) = 20
attr(1) = 20
attr(2) = 5
attr(3) = 5
attr(5) = 5                       
attr(6) = 5         
attr(7) = 5

Level=0

EP=0

Punkte=20

Ich habe hier kein attr(4), da ich viele Teile aus einem Sample kopiert hatte, und ich das vierte nicht benötigte und ich bis jetzt zu faul war, das zu löschen ^^.

Die Punkte stehen dafür, wieviel Punkte man eben am anfang auf die Attribute verteilen darf.

Hier ist derProblemfall:
Code: [AUSKLAPPEN]

Repeat
Locate 150,0
Write "Dein Name:" Print Spielername$ Locate 500,0 Write "Dein Level:" Print Level
Print "---------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
Write "Deine Lebenspunkte:" Locate 300,35 Print attr1
Write "Dein Mana:" Locate 300,53 Print attr(1)
Write "Deine Stärke:" Locate 300,71 Print attr(2)
Write "Deine Intelligenz:" Locate 300,89 Print attr(3)
Write "Deine Geschicklichkeit:" Locate 300,107 Print attr(5)
Write "Deine Verteidigung:" Locate 300,125 Print attr(6)
Write "Dein Glück:" Locate 300,143 Print attr(7)
Print "-----------------------------------------------------------------------------------"
Write "Zur Aufwertung verfügte Punkte:" Locate 300, 179 Print Punkte
Print ""
Write "Erfahrung" Locate 300,215 Print EP
Print "Was möchtest du aufwerten?"
Aufwertung$ = Input("Du kann Lebenspunkte (L), Mana (M), Stärke (S), Intelligenz (L), Geschicklichkeit (Ge), Verteidigung (V) oder Glück (Gl) aufwerten")
If Aufwertung$ = L Then
attr(1) = attr(1) + 1 Punkte = Punkte - 1
If Aufwertung$ = M Then
attr(2) = attr(2) + 1 Punkte = Punkte - 1
Usw.. usw...
Else
Print "Du musst L, M, S, L, Ge, V oder Gl eintippen!"
WaitKey
EndIf
Cls
Until Punkte = 0


Joa... eigentlich wollte ich es so haben, dass man einfach L eintippt, der PC einen cls macht und man sieht das Lebenspunkte gleich 21 ist, und die Punkte gleich 19.
Aber hier meint der PC immer, ovbwohl ich L eingegeben habe und M und alles mögliche (natürlich hintereinander nicht direkt!) ich hätte was falschen eingegeben also macht der Else Print "Du musst usw...

Auch wenn ich nur das in einen Neuen Code eingebe, will es nicht funktioneren....

Der Eisvogel

BeitragDo, Jul 03, 2008 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Anfängerfehler.
Du musst das Array ansprechen und nicht eine Variable.
Mit anderen Worten, schreib anstatt "attr1" einfach "attr(1)".
Das gilt für die anderen auch.

EDIT: Achja, benutz lieber den Befehl Text anstatt Print und Locate

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.
 

Noobfire

BeitragDo, Jul 03, 2008 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, da hab ich wohl falsch abgeschrieben.. Also im Code stehts richtig.. Ich habs jetzt nochmal gaanz simpel gemacht, aber es klappt immer noch net mit dem If. Das wird net gemacht!! Ach ja, es ging mir net um das attr(0), sonder um das Input was ja anscheinend net klappt, da ja immer die Nachricht kommt, dass ich L oder M usw eintippen soll...
Code: [AUSKLAPPEN]

"Was möchtest du aufwerten?"
Aufwertung$ = Input("L")
If Aufwertung$ = L Then
attr(0) = attr(0) + 1 Punkte = Punkte - 1
Else
Print "neeein"
EndIf

Ist hier irgendwas falsch??

EDIT: Ich hab jetzt einfach mal an das "neeein" ein Print Aufwertung$ drangehängt. Dies gibt mir immer die Taste aus, die ich vorher auch eingegeben hatte..... Also hier eben L. Irgendwie muss das mit dem If zusammenhängen, oder?? Ich verstehs net... Auch wenn ich sage attr(0) blablabla und dann Print "jaa" sagt er mir einfach nur neeein

Starwar

BeitragDo, Jul 03, 2008 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls L keine Variable ist und du den Buchstaben L meinst muss es heißen
If Aufwertung$ = "L" Then

Was willst du mit dieser Zeile erreichen?
attr(0) = attr(0) + 1 Punkte = Punkte - 1
Was willst du mit 1 Punkte ausdrücken? 1*Punkte? Dann musst du auch 1*Punkte schreiben oder nur Punkte
Falls du einer Variable einen wert zuweisen willst muss das immer so aussehen
a = b
a = b = c solltst du so schreiben:
a = b
c = b
(falls du das erreichen wolltest)
Ich hoffe ich hab das richtig verstanden Very Happy
 

timmeTheOnly

BeitragDo, Jul 03, 2008 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Noobfire,

du hast keine Anführungszeichen bei deiner Abfrage gemacht.

Hier der funktionsfähige Code:

Code: [AUSKLAPPEN]

"Was möchtest du aufwerten?"
Aufwertung$ = Input("L")
If Aufwertung$ = "L" Then
    attr(0) = attr(0) + 1
    Punkte = Punkte - 1
Else
Print "neeein"
EndIf


[EDIT]

Leider zu spät ^^

[EDIT2]

Das mit den Punkten. Ich glaube, dass das zwei Zeilen sind. Diese musst du entweder als zwei Zeilen schreiben oder durch einen : (Doppelpunkt) abtrennen.

Also entweder:

Code: [AUSKLAPPEN]

attr(0) = attr(0) + 1
Punkte = Punkte - 1


oder:

Code: [AUSKLAPPEN]

attr(0) = attr(0) + 1 : Punkte = Punkte - 1


MfG
timme
 

Noobfire

BeitragDo, Jul 03, 2008 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
AAh *patsch*
Vielen Dank ^^
Ihr habt mir echt geholfen Smile Vielen Dank!
Gibts hier ein Bedanken Button? ^^

Macht es einen Unterschied, wenn ich das mit dem Doppelpunkt oder dem Zeilenumbruch weglasse? Kapiert der PC das dann nicht?? Naja, egal ich werds auf jeden Fall so machen!

Dankeeee nochmal

EDIT: Kann man einen Zeilenumbruch den man nachher im Fenster sieht, bei einem Input Text machen?
Bsp blablabla = Input("Ganzlangertextmitsehrvielenbuchstabendiesehrlangssinduswusw")
Also wenn dieser Text beim Input zu lang ist, so dass man ihn nicht mehr sieht, braucht man ja einen Zeilenumbruch.. Wie geht der?
 

Noobfire

BeitragDo, Jul 03, 2008 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will das Spiel jetzt schnell weiter machen, und weil ihr das glaube ich nicht gesehen habt, dass ich einen EDIT gemacht habe, will ich hier mal ganz kurz und unauffällig pushen....

D2006

Administrator

BeitragDo, Jul 03, 2008 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
... was hier verboten ist, weswegen du nun offiziell darauf hingewiesen wirst, das zukünftig zu unterlassen.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

timmeTheOnly

BeitragFr, Jul 04, 2008 6:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir leid, aber es gibt keine Zeilenumbruchsfunktion in BB.

Schau mal in die Hilfe bei den Stringbefehlen, da gibts alles was du brauchst und mehr Very Happy
 

Noobfire

BeitragFr, Jul 04, 2008 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
@D2006 ok, Warnung angenommen Wink
@timmeTheOnly Ah, diese Hilfe kann man ja sogar Downloaden Smile Danke für den Hinweis... Nur finde ich da keine Stringefehle?? Ist das unter Grundlagen oder Datenverwaltung und wenn wo da? Question

Silver_Knee

BeitragFr, Jul 04, 2008 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/help/?cat=5 <<<von da aus auf zeichenketten
 

Noobfire

BeitragFr, Jul 04, 2008 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
achso Zeichenketten ^^

Hm... mir erscheinen die Funktionen aber ein wenig sinnlos?? Oder habe ich noch nicht kapiert, was man mit denen macht? Wofür braucht man den ASCII-Code eines Buchstabens in einem String??
 

Dreamora

BeitragFr, Jul 04, 2008 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
damit du das zeichen einfügen kannst.
zeilen umbruch zb ist cr - lf -> line + chr(14) + chr(10) + nextLine (wenn ich mich recht entsinne) zb. Jedoch sei darauf hingewiesen das print, text etc sich dafür nicht interessieren, das ist nur von bedeutung wenn du es in eine datei schreibst, ansonsten musst du dir das multi line handling selbst implementieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Gast

BeitragFr, Jul 04, 2008 21:08
Antworten mit Zitat
Es gab mal hier im Forum mal so eine Function, die konnte das, nur wie, weis ich gerade nicht!
 

Noobfire

BeitragFr, Jul 04, 2008 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso ^^

Nja, ich hab jetzt noch ne Frage... Wenn ich jetzt das Rollenspiel mit 2D Grafik mache, dann will ich so ne Vogelperspektive ... wie z.B. Pokemon dass man da so rumlaufen kann. Also man sieht alles von oben.. Wie geht das dann mit der Kamera, und wie geht das dann mit der Umgebung? Muss ich jedes einzelne Stück (seis jetzt ein Berg) einzeln mit nem Bild machen? Das wäre ja dann ein riesiger Speicherplatz-Bedarf für jede verschiedenen Untergrund Wände Häuser immer ein Bild zu machen. So viel Speicherplatz können die Module doch gar nicht gehabt haben?? Und außerdem, wie kann man dann die Animationen erstellen? Sagen wir mal, man sieht irgenden Typ, der auf ner Brücke steht, dann fängt die Brücke an zu taumeln, der Typ wackelt herum, klammert sich am Geländer fest und fällt schließlich in den Abgrund.. Muss man hier auch immer ein Bild erstellen?? Das kanns doch net sein!

ozzi789

BeitragSa, Jul 05, 2008 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Was die Vogelperspektive angeht , doch das geht schon
Hier ein Beispiel wie das aussehn würde ( hier sind es rechtecke , doch die lassen sich einfach mit Grafiken austauschen)


Code: [AUSKLAPPEN]
Graphics 640, 480, 0,2
HidePointer
ClsColor 100,150,100


;Kachel erstellen
Global kachel = CreateImage(32,32)
SetBuffer ImageBuffer(kachel)
Color 50,50,200
Rect 0,0,32,32,1
Color 120,120,250
Line 0,0,0,30
Line 0,0,30,0
Color 10,10,100
Line 31,31,31,1
Line 31,31,1,31
SetBuffer BackBuffer()

;Variablen der "Kamere"
Global cam_x
Global cam_y
Global cam_speed = 4

;Die Tilemap wird hier erstellt
Dim tilemap(100,100)
For x = 0 To 99
For y = 0 To 99
tilemap(x,y) = 1
Next
Next

For x = 2 To 97
For y = 2 To 97
tilemap(x,y) = 0
Next
Next

For x = 6 To 93
For y = 6 To 93
tilemap(x,y) = Rand(0,1)
Next
Next


;Die Hauptschleife
While Not KeyHit(1)

Cam_Control()

DrawTileMap()

Flip:Cls

Wend

;Die Sichtbaren Tile werden gezeichnet
Function DrawTileMap()
cam_x_div = cam_x / 32
cam_y_div = cam_y / 32

;Malt 21*16 Tiles statt 100*100 Tiles
For x = cam_x_div To cam_x_div + 20
For y = cam_y_div To cam_y_div + 15

If tilemap(x,y) = 1
DrawImage kachel,x*32-cam_x,y*32-cam_y
End If
Next
Next

End Function


Function Cam_Control()
;Die Kamera wird hier mit Pfeiltasten gesteuert, Q und A beeinflussen den Speed
If KeyDown(203) Then cam_x = cam_x - cam_speed
If KeyDown(205) Then cam_x = cam_x + cam_speed
If KeyDown(200) Then cam_y = cam_y - cam_speed
If KeyDown(208) Then cam_y = cam_y + cam_speed
If KeyHit(16) And cam_speed < 10 Then cam_speed = cam_speed + 1
If KeyHit(30) And cam_speed > 1 Then cam_speed = cam_speed - 1

;Hier wird verhindert, dass die Kamera ausserhalb der Map gerät
If cam_x < 0 Then cam_x = 0
If cam_y < 0 Then cam_y = 0
If cam_x > 2560 Then cam_x = 2560
If cam_y > 2720 Then cam_y = 2720

End Function




Ich weiss nicht wie lange du schon codest , aber nimm dir nicht zu viel vor am anfang Wink



Animationen kriegst du mit "Loadanimimage" hin, schau mal inner Hilfe nach.
Das mit der Brücken-Szene , ich versteh ned was du genau sagen willst, klar must du es zeichnen Confused



mfg
ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Noobfire

BeitragSa, Jul 05, 2008 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mit der Brücken Szene mein ich einfach nur, dass man vorher z.B. immer über so eine Brücke rüber laufen konnte, die Brücke aber dann halt kauptt geht. Das müsste man ja dann mit dem Befehl "Loadanimimage" machen. Also eig ja ganz einfach. Man malt ne Schlucht, ne Bücke drüber. Dann ne Animation wie ein Typ da hingelaufen kommt, dann sieht man wie die Brücke wackelt und dann fällt der Typ runter.

Aber das wird eine Heidenarbeit, jedes einzelne Bild mit ka erstmal Paint zu malen Embarassed

Aber mit dem Beispiel hast du mir jetzt schon mal echt geholfen, danke! Jetzt muss ich nur noch herausfinden, wie man da jetzt einen Typen reinmalen kann, den man auch steuern kann.....

ozzi789

BeitragSa, Jul 05, 2008 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ja dieses Opfer must du wohl auf dich nehmen (zeichnen) Wink


aber bevor du dich mit solch kleinen Details beschäftigst , probier lieber mal das Mänchen zum laufen bringen...


Wenn du fragen hast, frag einfach !
(den code häte ich , doch du must schon n bisl selber krampfen Smile)




@ All

Ach ja mist , weis ned woher ich den Code hab , is ned von mia !
thx an den macher
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Noobfire

BeitragSa, Jul 05, 2008 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Och komm, bitte ^^ Sag mir den Code, den man braucht, um da einen Menschen einzufügen.. ^^ Braucht ja kein Bild dabei zu sein! Dann würdest du mir erheblich helfen! Wenn du mir dann auch noch sagen würdest, wieso mein Programm zwar eine Settings.ini erstellen kann, aber nichts reinschrieben kann, dann .. dann ööhm... bekommste nen keks Very Happy


Code: [AUSKLAPPEN]

Spielername$ = Input("Spielername eingeben:")
Spielerconfig = WriteFile("test.ini")
WriteString Spielerconfig, "Spielername$"
WriteByte Spielerconfig, attr(0) = 20

ozzi789

BeitragSa, Jul 05, 2008 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ehm

1. Nein es tut mir leid , ich weis wie das ist , aba du must mir wenigstens n anfang zeigen und wens echt ned geht helf ich dia n bissl Razz

2. Probiers mal mit Closefile ?
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group