Attribut änderung will und will nicht funktionieren
Übersicht

NoobfireBetreff: Attribut änderung will und will nicht funktionieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() ![]() ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
AAh *patsch*
Vielen Dank ^^ Ihr habt mir echt geholfen ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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.... | ||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
... 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Noobfire |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@D2006 ok, Warnung angenommen ![]() @timmeTheOnly Ah, diese Hilfe kann man ja sogar Downloaden ![]() ![]() |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/help/?cat=5 <<<von da aus auf zeichenketten | ||
Noobfire |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat |
|
---|---|---|
Es gab mal hier im Forum mal so eine Function, die konnte das, nur wie, weis ich gerade nicht! | ||
Noobfire |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 ![]() mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Noobfire |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja dieses Opfer must du wohl auf dich nehmen (zeichnen) ![]() 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 ![]() @ 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() Code: [AUSKLAPPEN] Spielername$ = Input("Spielername eingeben:") Spielerconfig = WriteFile("test.ini") WriteString Spielerconfig, "Spielername$" WriteByte Spielerconfig, attr(0) = 20 |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 2. Probiers mal mit Closefile ? |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group