Farbe eines Objekts ändern...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

totonak5

Betreff: Farbe eines Objekts ändern...

BeitragSa, Mai 21, 2005 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich habe in einem Spiel einen kreis und den möchte ich so ändern, dass es sich innerhalb von ca 3 sekunden dem hintergrund anpasst!
ich hab jetzt schon viel probiert aber entweder meine versuche missglücken oder der computer kommt nicht mehr mit dem farbenlesen und schreiben nach!

könnt ihr mir da irgendwelche tipps geben!


danke im voraus!
lg

ps: meine quelltexte sind leider nicht bei mir zH!
Just for Fun!
Jesus loves U!

pokop

BeitragSa, Mai 21, 2005 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Color rot,grün,blau
 

DarkMike

BeitragSa, Mai 21, 2005 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
LOL, ich glaub das weiss er selber! Very Happy
ich dachte ja an Seedrnd millisecs und so aber da es sich nach der Hintergrund farbe richtet musst dir das vorher ausrechnen! In ner schleife natürlich!
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)
 

totonak5

BeitragSa, Mai 21, 2005 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, er wollt nur lustig sein!

das mit der schleife ist so, dass ich dann jedes mal festellen muss welche farben der hintergrund und der kreis hat und dann wird das programm viel zu langsam!
Just for Fun!
Jesus loves U!
 

DarkMike

BeitragSa, Mai 21, 2005 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
wie hast du es denn gemacht (ich weiss deinen code hast nicht da) aber villeicht kannst dich noch an was erinnern!
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)
 

totonak5

BeitragSa, Mai 21, 2005 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab halt ein pixel genommen vom hintergrund (gleich neben dem kreis) und ein pixel vom kreis selbst! mit readpixelfast hab ich dann die farben festgestellt!
dann hab ich die farben r,g und b verglichen und wenn zb die farbe rot vom hintergrund um 10 größer war als die vom kreis hab ich gemach colkreisr = colkreisr - 10
Just for Fun!
Jesus loves U!
 

DarkMike

BeitragSa, Mai 21, 2005 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm, müsste eigentlich funzen(und zwar nicht zu langsam),villeicht is es wegen etwas anderem so langsam!
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)
 

totonak5

BeitragSa, Mai 21, 2005 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, ich weiß es nicht!! ich könnt euch ja mal den code schicken!
ich versuche ihn jetzt noch mal zu machen!
Just for Fun!
Jesus loves U!

Alfadur

BeitragSa, Mai 21, 2005 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
du mußt die farbe des hintergrunds ja nur einmal feststellen, die ändert sich ja nicht.

also
hintergrund = readpixel()
hr=
hg=
hb=
da mußte die einzelnen farbanteile berechnen....

vom kreis die farbe weißt du ja ... oder?
also :
kr=
kg=
kb=
da auch die einzenen farbanteile berechnen...

tja, und dann brauchste in ner schleife ja nur noch zu machen

if kr<=hr then kr=kr+1 else kr=kr-1
das gleiche mit kg und kb.

dann noch color(kr,kg,kb) und den kreis malen. sollte funktionieren....
A Cray is the only computer that runs an endless loop in less than four hours.
 

totonak5

BeitragSa, Mai 21, 2005 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
okay, danke!
ich habs genau so gemacht!
aber ich habe das in verbindung mit types und ich denke der fehler ist, dass ich dann scho zu viele kreise kontrollieren muss!
da muss ich halt eine obergrenze von kreisen machen und die dann löschen!

trotzdem danke @ all

lg
Just for Fun!
Jesus loves U!
 

DebbieDanger

BeitragSa, Mai 21, 2005 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Frage ist auch ob dein hintergrund einfarbig ist oder mehrfarbig, also wenn du nur eine farbe hast brauchst du die ja nicht auslesen, aber es klingt so als hättest du einen mehrfarbigen hintergrund.
Beim nächsten mal bitte mehr informationen.
Was ich mir noch vorstellen könnte ist ein problem das du wenn du immer z.b. 10 farbstufen abziehst manchmal nicht genau bei der farbe landest sondern darüberschreitest oder so.

Horst der Biber

BeitragSa, Mai 21, 2005 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
falls du blitz 3d hast, versuch des ma.

BlitzBasic: [AUSKLAPPEN]
Graphics3D 640,480,32,2
camera=CreateCamera()
CameraClsMode camera,0,1
CameraRange camera,1,700
sprite=CreateSprite()
kreisbild=CreateTexture(64,64) ;kreisgröße
SetBuffer(TextureBuffer(kreisbild))
Color 255,255,255 ;farbe
Oval 0,0,64,64
SetBuffer(BackBuffer())
ScaleSprite sprite,64,64
EntityTexture sprite,kreisbild
PositionEntity sprite,((xkoordinateinpixeln)*2)-bildschirmauflösungx+kreisbreite,-((ykoordinateinpixeln)*2)+bildschirmauflösungy-kreishöhe,640
For blob#=0 To 1 Step 0.01
EntityAlpha sprite,blob
;bildschirmbemalen
RenderWorld()
Flip
Next


ist aus nem tutorial von unrealsoftware.de
 

totonak5

BeitragSo, Mai 22, 2005 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab jetzt ein bisschen mit dem herumgespielt und jetzt ist folgendes herausgekommen:

Code: [AUSKLAPPEN]

Graphics 640,480,0,0
SetBuffer BackBuffer()
.neu

SeedRnd MilliSecs()

hintergrundr = Rand(255)
hintergrundg = Rand(255)
hintergrundb = Rand(255)

Ende = 0
r = Rand(255)
g = Rand(255)
b = Rand(255)

Repeat
 ClsColor hintergrundr,hintergrundg,hintergrundb
 Cls

Color r,g,b
Oval 200,100,280,280

; Farbe des Kreises ändern
 LockBuffer (BackBuffer)
 rgbh= ReadPixelFast(1,1)
 rh = (rgbh And  $FF0000)/$10000
 gh = (rgbh And $FF00)/$100
 bh = rgbh And $FF
 rgb = rgbn
 If fe = 0
  rgb=ReadPixelFast (300,300)
  fe = 1
 EndIf
 r = (rgb And  $FF0000)/$10000
 g = (rgb And $FF00)/$100
 b = rgb And $FF
 fa = fa + 1
 If (fa Mod 2)
  If rh < r Then r = r - 1
  If rh > r Then r = r + 1
  If gh < g Then g = g - 1
  If gh > g Then g = g + 1
  If bh < b Then b = b - 1
  If bh > b Then b = b + 1
 EndIf
 rgbn = r*$10000 + g*$100 + b
 UnlockBuffer (BackBuffer)

If r = rh
 If g = gh
  If b = bh
   Ende = 1
   Delay 1000
  EndIf
 EndIf
EndIf
If Ende = 1 Then Goto neu

Flip
Until KeyHit(1)



wenn man einen 2- oder mehrfarbigen hintergrund hat, muss man die hintergrundfarbe nur 1 mal feststellen!


lg
Just for Fun!
Jesus loves U!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group