Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
masterherpo
Anmeldungsdatum: 22.01.2006 Beiträge: 102
|
Verfasst am: 12.09.2007, 11:10 Titel: Inventar für ein Spiel/ Scrollbalken im Dos Style |
|
|
Hallo, ich auch brauche Hilfe bei der Inventarprogrammierung für ein Spiel.
Ich habe es so gemacht: Wenn man einen Gegenstand findet, wird eine variable auf eins gesetzt. Wenn wenn die Variable=1 ist, wird der Gegenstand im Inventar angezeigt (an einer bestimmten Stelle mit Locate). Das Problem ist jetzt, dass ich mehrere neue Gegenstände einbauen will, aber mein Inventarbildschirm fast voll ist. Daher brauche ich einen Scrollbalken, den man wie bei alten Dos-Hilfedateien mit den Pfeiltasten hoch und runter bewegen kann-> auch vom aussehen in diesem Stil.
Kann mir jemand da helfen? |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 12.09.2007, 11:40 Titel: |
|
|
knifflige Sache
hab mal versucht auf die schnelle was zusammen zu basteln
vielleicht hilfts....
Code: |
Randomize Timer
Const MaxObj=100 'Maximala Anzahl an Objekten
Const ViewObj=8 'Maximale Anzahl gleichzeitig anzeigbarer Objekte
Const MaxScrl=Int(MaxObj/ViewObj)
Dim Objekte(1 to MaxObj) as byte 'Array fuer die Objekte
''Zum testen Objekte zufaellig setzen
for l as integer = 1 to MaxObj
Objekte(l)=Int(rnd*2)
next l
''
''Objekte zaehlen
Dim count as integer
count=0
for l as integer = 0 to MaxObj
If Objekte(l) Then count+=1
next l
?count 'Anzahl anzeigen lassen
'Scrollbalken' setzen und ggf. zuruecksetzen
Dim Scrl as Integer=1
Do
If (Scrl/ViewObj)>MaxScrl Then Scrl-=1
Loop While (Scrl/ViewObj)>MaxScrl
'objekte anzeigen
Dim ll as integer ''zaehlervariable
Dim lll as integer
For l as integer=0 to 7
''Finde naechstes Objekt
Do
ll+=1
If Objekte(ll)=1 Then lll+=1
If lll > ((Scrl*ViewObj)+l) Then ?"Objekt Nr: " &ll:exit do
loop
Next l
sleep
|
_________________
 |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 12.09.2007, 14:38 Titel: |
|
|
Ein kleines Beispiel um Schaltflächen für die Maus zu realisieren
Code: | dim shared as integer functionposx(1 to 99999)
dim shared as integer functionposy(1 to 99999)
dim as integer mausX,mausY,MB
sub MenuKnopf(x as integer ,y as integer ,char as ubyte,functionnr as integer)
locate x,y,0
print chr(char)
functionposX(functionnr)=X-1
functionposY(functionnr)=Y-1
end sub
MenuKnopf (12,12,asc("X"),1)
print
Print "Bitte Linksklick mit der Maus auf das X.."
do
getmouse mausY,MausX,,MB
if mausX = functionposx(1) and mausY = functionposy(1) and MB = 1 then Print "Easy ;)":sleep 1000:exit do
sleep 1
loop
|
_________________ Bis irgendwann...  |
|
Nach oben |
|
 |
masterherpo
Anmeldungsdatum: 22.01.2006 Beiträge: 102
|
Verfasst am: 12.09.2007, 16:29 Titel: |
|
|
Danke euch beiden aber wirklich weiterhelfen tut mir das nicht....
Habe mir auch verschiedene Text-Scrolling.beispiele angesehen aber irgendwie hilft mir das nicht so ganz....könnte man mit FB eine art Inline-Frame einbauen (ohne winapi etc. nutzen zu müssen, ich will mir die Option offen halten mein spiel auch auf Linux complimeiren zu können).
Der Scrollbalken ist nicht so wichtig, Hauptsache ich kann mit den Pfeitasten scrollen (natürlich nur solange notwendig, damit man nicht endlos scrollt). |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 12.09.2007, 17:47 Titel: |
|
|
ich arbeite gerade dran..
der folgende code simuliert mein vorhaben..
links das rollenspiel live und rechts der scroll des inventars.
wenns erstma richtig funzt, folgt die umsetzung als funktion und support für bilder etc
Code: | screenres 400,400
dim as string text1 = "text"
dim as string text2 = "text2"
dim as integer haelfte = 200
dim as integer positionx,positiony
'positiony=haelfte-abzug
positiony=300
for positionx=400 to 1 step -1
draw string (positiony,positionx+1),text1,0
draw string (positiony,positionx),text1,15
draw string (positiony,positionx+9),text2,0
draw string (positiony,positionx+8),text2,15
draw string (INT(RND*200)+1,INT(RND*200)+1),"XXX",positionx mod 255
sleep 5
next
sleep
|
_________________ Bis irgendwann...  |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 13.09.2007, 09:46 Titel: |
|
|
Am einfachsten ist es wenn du ein Array benutzt, eine Liste sozusagen die deine Objekte 'symbolisieren'
wie schon oben in meinem Versuch...
Dim Objekte(1 to maxiamaleAnzahlanobjekten) as byte
jedes objekt hat nun seinen Platz... (bitte eine nummer ziehen und warten )
Code: |
Dim AnzahlObjekte as Integer 'Hier halten wir fest, wieviele Objekte wir bei uns tragen
Dim ObjektNummer(1 to 100) as Integer 'Hier wird reingeschrieben, um welche Objekte es sich handelt
AnzahlObjekte=0
for l as integer=1 to 100
If Objekte(l) Then
ObjektNummer(AnzahlObjekte)=l
AnzahlObjekte+=1
End If
next l |
So kannst Du nun die anzahl Deiner Objekte zaehlen und in einem zweiten Array haelst Du die nummer der Objekte fest....
somit weisst Du nun, wieviele Objekte Du hast und welche das sind...
der rest sollte dann nicht mehr so schwer sein  _________________
 |
|
Nach oben |
|
 |
masterherpo
Anmeldungsdatum: 22.01.2006 Beiträge: 102
|
Verfasst am: 13.09.2007, 11:44 Titel: |
|
|
Ich habe deinen Code nicht ganz verstanden, aber das Prinzip
Habe nun etwas ähnliches geproggt, ist noch nicht ganz fertig, aber ich denke das klappt
Vielen Dank  |
|
Nach oben |
|
 |
|