Fräge zu | (And)

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

bruZard

Betreff: Fräge zu | (And)

BeitragMi, Jun 29, 2005 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich Werte mittels | verknüpfe ... Code: [AUSKLAPPEN]
meinwert:Int = wert1:Int|wert2:Int|wert3:Int
... wie bekomme ich die einzelnen Werte wieder auseinander klamüsert? Ich glaube ST hatte da mal was gepostet, ich finde es aber ums Verrecken nicht mehr.

Schonmal Danke für jeden hilfreichen Hinweis Smile
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Suco-X

Betreff: ...

BeitragMi, Jun 29, 2005 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Strict


Local SHADOW = 2
Local LIGHT = 4
Local NONE = 8



Local zustand = LIGHT|SHADOW


If zustand & SHADOW

   Print "Shadow"
EndIf

If zustand & LIGHT

   Print "LIGHT"
EndIf


If zustand & NONE

   Print "None"
EndIf


Ein kleines Beispiel. Die Werte müssen immer das Doppelte vom vorrigen sein, wenn ich mich nicht irre. Weiter ginge es halt mit
16, 32, 64, 128, 256
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

bruZard

BeitragMi, Jun 29, 2005 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, wenn das nur so funzt ist es nicht tauglich für das was ich brauche ... ich will einen festen Wert mit einer Variablen verknüpfen.
Code: [AUSKLAPPEN]

Const IS_GET_ALL:Int = 1
Const IS_GET_LEVEL:Int = 2
Const IS_GET_SKILL:Int = 3
Const IS_GET_BOTH:Int = 4

Local level:Int = 12 ' nur als Beispiel
Local skill:Int = 2

iS_GetScores(IS_GET_BOTH|level|skill)

'oder

iS_GetScore(IS_GET_LEVEL|level)

Das ist nicht aus dem Original-Code, sollte aber verdeutlichen was mir vorschwebt.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image
 

Dreamora

BeitragMi, Jun 29, 2005 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist alles kein Problem. Aber die Variablen dürfen nur 2er Potenzen haben. Also 1,2,4,8,16,32,.... wie die Flags in B3D für Texturen zb. Denn jeder dieser Werte hat eine eigene, eindeutige one-hot BitCodierung und die ist notwendig, damit man sie mit | und & einfach verknüpfen kann.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

bruZard

BeitragMi, Jun 29, 2005 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ich kann wohl kaum in der Dokumentation angeben dass Level- und Schwierigkeitsgrad immer als Zweierpotenz angegeben werden muss Wink
Ich werde das dann doch über einzelne Funktionsparameter machen.

Trotzdem Danke für Eure Hilfe Jungs.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image
 

Dreamora

BeitragMi, Jun 29, 2005 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum kannst du das nicht?

Alternativ kannst du eine Funktion schreiben die ihnen werte zuweist, die einfach 2^value macht mit value 0 bis 22 oder so
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheShadow

Moderator

BeitragMi, Jun 29, 2005 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
bruz du enttäuschst mich wieder :-)

wie wäre es mit:
(alle werte hier 0-255 möglich in dem Beispiel)

value=(skill SHL 16)|(level SHL 8)|IS_GET

so dann machst du so:

IS_GET=value&255
level=(value SHR 8)&255
skill=(value SHR 16)&255


so hier ist aber noch unoptimiert...

für IS_Get würdest du 3 bits brauchen (geht dann 0-7)
Für level 4 bits (geht dann 0-15)
für skill 2 bits (geht dann 0-3)

insgesamt 3+4+2=9 bits würden reichen wenn man es optimiert
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

bruZard

BeitragMi, Jun 29, 2005 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee TheShadow ... soweit war ich schon ... Bitverschiebung geht bei mir nicht weil ich Integer für Level und Skill verwende ....

Ist aber auch egal, ich habe das jetzt direkt über Funktionsparameter gelöst und es funktioniert einwandfrei.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

TheShadow

Moderator

BeitragMi, Jun 29, 2005 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
wow 2 Mrd Level ?
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group