Zielscheibe
Übersicht

![]() |
LifetecBetreff: Zielscheibe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich habe diese Zielscheibe.
[img] http://www.sv-kreuzlingen.ch/Zielscheibe-1001.gif [/img] Und ich wollte mal fragen wie kann ich es machen das, wenn das schwarze gtroffen wird es 10 Punkte gibt und wenn man das weiße trift nur 5 Punkte ???? (Mit ImagesCollide geht es ja nicht weil man dann das ganze bild nimmt.) |
||
Roggi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also eine Idee wäre glaube ich, die Scheibe in 2 Bilder zu teilen und diese dann so zu positionieren dass es so aussieht als wenn es eins wäre. Dann geht auch Imagescollide.
MfG Tom |
||
flohrian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das was 0ahnung da erzählt ist meiner ansicht nach auch die einfachste lösung... | ||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
readpixel(fast)...viel schneller und einfacher...und weniger arbeit.. | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, Satz des Pytagoras, würde ich anwenden. | ||
between angels and insects |
flohrian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
a² + b² = c²
aber was bringt das jan_ ?? satz des pytagoras berechnet die länge der seite die dem rechten winkel in einem rechtw. dreieck gegenüberliegt! das hat 0 bezug auf sein problem!! |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
oh doch.
Weil damit kann man den Abstand eines Punktes zu einem anderen Berechnen. Code: [AUSKLAPPEN] ab# = SQR ( (x1-x2)^2 + (y1-y2)^2 )
Genau das was er braucht. Und alle ImagesCollide Lösungen könnt ihr mal gediegen in die Tonne treten. Einfach Abstand des Einschlags zum Bullseye berechnen und Punkte zu ordnen. MfG D2006 |
||
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 |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Er weiß sicherlich was der satz des Pythagoras ist. und er will wohl viel eher
die Entfernungvon der Mitte der Zielscheibe zum Punkt des Einschusses ausrechnen. Ist dieser über X gibts keine Punkte, desto kleiner der Abstand, desto mehr Punkte. IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke nochmal an die Vorredner,
Ich werde es nochmal etwas Mathematich ausdrücken Also, um zu wissen, ob es in einen Kreis ist, würde ich den swatz des Pytagoras nehmen. hier braucht man den Radius, und die 2 Coordinaten, der Punkte. Code: [AUSKLAPPEN] ab# = SQR ( (x1-x2)^2 + (y1-y2)^2 )
ab# ist dann die Hypothenuse über ein imaginärgebildetes Dreieck. --> die Hypothenuse ist der Optimale weg, ohne Winkel. --> ab# = die entfernung der 2 Punkte wenn die entfernung kleiner des Radius ist, trifft man aozusagend. Code: [AUSKLAPPEN] ab# = SQR ( (x1-x2)^2 + (y1-y2)^2 )
if ab# <= radius Punkte = 50 else Punkte = 25 endif ist doch ganz einfach und vorallem schnell ![]() |
||
between angels and insects |
![]() |
Cardonic |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
@IMurDOOM: Mit dem Satz des Pythagoras kann man ja die Entfernung zur Mitte der Zielscheibe ausrechnen. mfg Cardonic |
||
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet. |
![]() |
Lifetec |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hä ich habe es mal probirt in meinen Code zu setzen aber irgendwie geht das nicht .
Könnt ihr mir helfen. Mein Code: Code: [AUSKLAPPEN] Graphics 800,600,0,1 SetBuffer BackBuffer() hinter = LoadImage("GFX\Hintergrund\insel1024x768.jpg") pointer = LoadImage("GFX\faden.bmp") SpeilMenu = LoadImage("GFX\SpielMenu\Menu.bmp") Beenden = LoadImage("GFX\SpielMenu\Ende.bmp") Beendeng = LoadImage("GFx\SpielMenu\Endeg.bmp") MBildK = LoadImage("GFX\Kanone\schuss ne0001.bmp") Kanone = LoadImage("GFX\Kanone\schuss n0000.bmp") Kanoner = LoadImage("GFx\Kanone\schuss ne0000.bmp") Kanonel = LoadImage("GFx\Kanone\schuss nw0000.bmp") explosion = LoadAnimImage("GFX\explosion\explosion.bmp",96,96,0,15) Kugel = LoadImage("GFX\Kanone\einzelne kugel.bmp") font = LoadFont("X-Files",15,0,0,0) SetFont font ;Zielscheinbn ziel1 = LoadImage("GFX\Zielscheibe\zielscheibe1.bmp") ziel2 = LoadImage("GFX\Zielscheibe\ziel2.bmp") ;MasKimage MaskImage Kugel,128,128,128 MaskImage MBildK,106,76,48 MaskImage pointer,255,255,255 MaskImage Kanone,106,76,48 MaskImage Kanoner,106,76,48 MaskImage Kanonel,106,76,48 MaskImage ziel1,255,255,255 MaskImage ziel2,255,255,255 MidHandle explosion MaskImage explosion,128,128,128 MidHandle kugel schuss = 1 ;Hauptschleife Repeat Cls X = MouseX() Y = MouseY() DrawImage hinter,0,0 DrawImage speilmenu,0,450 DrawImage MBildk,60,495 DrawImage Beenden,755,555 DrawImage ziel1, 100,100 DrawImage pointer,X,Y If schuss = 1 Then DrawImage ziel2,200,100 If ImagesCollide(pointer,X,Y,0,ziel2,200,100,0) And MouseDown(1) Then Cls schuss = 2 FlushMouse Punkte = Punkte+100 EndIf EndIf ;Kanonen (RichtunG) If X > 257 And X < 523 Then DrawImage Kanone,380,380 If X > 523 Then DrawImage Kanoner,380,380 If X < 257 Then DrawImage Kanonel,380,380 DrawImage pointer,X,Y ;Menu ;Menu Colliosion If ImagesCollide(pointer,X,Y,0,Beenden,755,555,0) Then DrawImage beendeng,755,555 DrawImage pointer,X,Y EndIf If ImagesCollide(pointer,X,Y,0,Beenden,755,555,0) And MouseDown(1) Then End EndIf Color 127,0,0 Text 200,480,"Punkte: " + Punkte ;Kugel plus explosion explo = 0 If MouseDown(1) And explo = 0 Then explo = 1 For I=0 To 14 DrawImage Kugel,X,Y DrawImage explosion, X, Y, I Flip Delay 5 Next EndIf Flip Until KeyDown(1) |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast es überhaupt nicht eingesetzt. Verarschen können wir uns alleine... ![]() |
||
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 |
![]() |
LifetecBetreff: Hups das war der falsche |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hups das war der falsche
Hier der wo ich eingesetzt habe ![]() Code: [AUSKLAPPEN] Graphics 800,600,0,2 SetBuffer BackBuffer() hinter = LoadImage("GFX\Hintergrund\insel1024x768.jpg") pointer = LoadImage("GFX\faden.bmp") SpeilMenu = LoadImage("GFX\SpielMenu\Menu.bmp") Beenden = LoadImage("GFX\SpielMenu\Ende.bmp") Beendeng = LoadImage("GFx\SpielMenu\Endeg.bmp") MBildK = LoadImage("GFX\Kanone\schuss ne0001.bmp") Kanone = LoadImage("GFX\Kanone\schuss n0000.bmp") Kanoner = LoadImage("GFx\Kanone\schuss ne0000.bmp") Kanonel = LoadImage("GFx\Kanone\schuss nw0000.bmp") explosion = LoadAnimImage("GFX\explosion\explosion.bmp",96,96,0,15) Kugel = LoadImage("GFX\Kanone\einzelne kugel.bmp") font = LoadFont("X-Files",15,0,0,0) SetFont font ;Zielscheinbn ziel1 = LoadImage("GFX\Zielscheibe\zielscheibe1.bmp") ziel2 = LoadImage("GFX\Zielscheibe\ziel2.bmp") ;MasKimage MaskImage Kugel,128,128,128 MaskImage MBildK,106,76,48 MaskImage pointer,255,255,255 MaskImage Kanone,106,76,48 MaskImage Kanoner,106,76,48 MaskImage Kanonel,106,76,48 MaskImage ziel1,255,255,255 MaskImage ziel2,255,255,255 MidHandle explosion MaskImage explosion,128,128,128 MidHandle kugel MidHandle pointer schuss = 1 ;Hauptschleife Repeat Cls X = MouseX() Y = MouseY() DrawImage hinter,0,0 DrawImage speilmenu,0,450 DrawImage MBildk,60,495 DrawImage Beenden,755,555 DrawImage ziel1, 100,100 DrawImage pointer,X,Y If schuss = 1 Then DrawImage ziel2,200,100 If ImagesCollide(pointer,X,Y,0,ziel2,200,100,0) And MouseDown(1) Then schuss = 2 FlushMouse Punkte = Punkte+100 Goto test EndIf EndIf ;Ziel ziel = Sqr ( (x1-x2)^2 + (y1-y2)^2 ) If ab# <= radius Punkte = 50 Else Punkte = 25 EndIf ;Kanonen (RichtunG) If X > 257 And X < 523 Then DrawImage Kanone,380,380 If X > 523 Then DrawImage Kanoner,380,380 If X < 257 Then DrawImage Kanonel,380,380 DrawImage pointer,X,Y ;Menu ;Menu Colliosion If ImagesCollide(pointer,X,Y,0,Beenden,755,555,0) Then DrawImage beendeng,755,555 DrawImage pointer,X,Y EndIf If ImagesCollide(pointer,X,Y,0,Beenden,755,555,0) And MouseDown(1) Then End EndIf Color 127,0,0 Text 200,480,"Punkte: " + Punkte ;Kugel plus explosion explo = 0 kugel = 1 If MouseDown(1) And explo = 0 Then .test For I=0 To 14 explo = 1 DrawImage explosion, X, Y, I Flip Delay 5 Next EndIf Flip Cls Until KeyDown(1) |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du bist jetzt fast nen halbes Jahr dabei, und hast immer noch nicht gelernt deinen Code richtig einzurücken! Schwach!
Es gibt Leute, die haben keine lust deinen Code erst auseinanderzunehmen um zu wissen, was wo gemacht wird und somit kannst du nur auf sehr geringe Hilfe warten. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich stimme skey-z voll und ganz zu, schaffst es nicht einzurücken,
modellierung des Codes einfach unleserlich. Das könnte meine Omma besser. Und die hat nun wirklich keine Ahnung von PCs. Nen cls inner Kollisions IF Anweisung. Irgendwann wirst du nen neuen Thread erstellen in dem du fragen wirst warum alles bisher gezeichnete verschwindet wenn x mit y collidiert. Ist ja logisch warum. Man man. Wie immer wird bestätigt das Leute wie du anscheinend keine Lust haben zu lernen und den Quellcode IDENTISCH zu dem hier bereits geoposteten in dem Code übernehmen. Du hättest ihn wenigstens deinem schlechten Einrückstil anpassen können. Auch wenns hart klingt aber es ist so und ich denke viele werden mich verstehen, mit Copy&Paste kommt ihr nicht weiter Jungs. Ach und noch was: Auch Leerzeilen um Übersicht zu behalten sind erlaubt. Sogar mal 2 oder gar 3 hintereinander. Merk dir das! IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
darthBetreff: .. |
![]() Antworten mit Zitat ![]() |
---|---|---|
haaallooo
so, ich will jetzt n bisschen angeben! für das codearchiv ist das ding zu mies, aber für "anfänger" sollte es brauchbar sein. das ist mein dart spiel (wortwitz!), es sollte die auswertung eines schusses (hoffentlich) gut darstellen und erläutern. es hat noch verzierung rundherum (z.b der type), ich hätte es für euch natürlich noch auf maus-steuerung umschrieben können, aber ich bin der ansicht, dass man sich auch durch fremde codes lesen können sollte. (meine codes sind eingerückt und haben leerzeilen ![]() für alle die denken man sollte anfänger nicht mit codes versorgen: mir doch egal ![]() Code: [AUSKLAPPEN] Graphics3D 200,200,0,2
AppTitle "Dart ©darth" ;hahaha :) "wortspiel" Type shot ;für geschossene punkte Field sx Field sy End Type While Not KeyHit(1) ;mittelpunkte der kreise jeweils 100/100 ;radien von 125 in 25er schritten runter (125,100,75,50,25,5) ;kreise alternierend weiss/schwarz Color 255,255,255 : Oval -25,-25,250,250 Color 0,0,0 : Oval 0,0,200,200 Color 255,255,255 : Oval 25,25,150,150 Color 0,0,0 : Oval 50,50,100,100 Color 255,255,255 : Oval 75,75,50,50 Color 0,0,0 : Oval 95,95,10,10 For s.shot=Each shot ;geschossene punkte malen Color 125,125,125 : Oval s\sx-3,s\sy-3,6,6 Next If MouseHit(1) Then ;mx (x koordinate der selektierung) und my (y koordinate der selektierung) ;phytagoras! => (Xmitte-mx)^2+(Ymitte-my)^2=radius^2 ; => d.h es muss grösser als kleinerer radius und kleiner als grösserer radius sein If Sqr((100-mx)^2+(100-my)^2)<5 Then point=point+50 If Sqr((100-mx)^2+(100-my)^2)>10 And Sqr((100-mx)^2+(100-my)^2)<25 Then point=point+40 If Sqr((100-mx)^2+(100-my)^2)>25 And Sqr((100-mx)^2+(100-my)^2)<50 Then point=point+30 If Sqr((100-mx)^2+(100-my)^2)>50 And Sqr((100-mx)^2+(100-my)^2)<75 Then point=point+20 If Sqr((100-mx)^2+(100-my)^2)>75 And Sqr((100-mx)^2+(100-my)^2)<100 Then point=point+10 If Sqr((100-mx)^2+(100-my)^2)>100 And Sqr((100-mx)^2+(100-my)^2)<125 Then point=point+5 s.shot=New shot : s\sx=mx : s\sy=my no=no+1 EndIf ;schussziel setzen Color 200,0,0 : Oval mx-3,my-3,6,6 If MilliSecs()-settime>250 Then ;"timer" funktion settime=MilliSecs() mx=Rnd(0,200) : my=Rnd(0,200) EndIf Color 200,0,0 : Text 175,5,point ;punktzahl If no>0 Then Text 175,15,point/no ;durchschnittliche pt pro schuss Flip 0 : Cls Wend @wer auch immer etwas damit anfangen kann: have fun (und: das © steht aus einem bestimmten grund da... ich habe absolut nichts dagegen wenn man das prinzip des codes oder teile davon verwendet, solange nicht der code als ganzes kopiert wird ![]() PS: sollte dieser beitrag irgendwessen erziehungsmethoden absolut und total widerstreben, dann mögen die freundlichen mods ihn doch bitte entfernen. andernfalls kann man ihn hier belassen und weiteren leuten die hoffentlich die suche benutzen behilflich sein mit einem dart (!) in die programmiererei einzusteigen. |
||
Diese Signatur ist leer. |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Lifetec: Also du hattest ja schon in einem anderen Thread dasselbe/ähnliche Program gepostet, da aber noch mit der Frage wie man es machen kann das Geschosse ein bestimmtes Ziel treffen. Also ich weis ja nicht, aber wenn dir mein Beitrag nicht weitergeholfen hat, dann kannst du da doch auch den Thread weiterführen und weiterfragen! Und wenn er dir weitergeholfen hat (was ich jetzt aber nicht glaube, da dir allem Anschein nach sogar Pythagoras unbekannt ist, und das in der Schule meist VOR Sin und Cos drankommt) dann darf man hier im Forum auch ein kurzes Danke schreiben.
So, nun aber zum Topic: Ich gebe dir einen Rat, Lifetec. Schau dir mal die Formatierungen der bisher als Hilfe geposteten Codes an (Also Darths und meinen) und versuch diese in deinem Code auch mal so ähnlich ein zu führen. Also im groben: Schleifeninhalte einrücken, ebenso if-Inhalte und Case Anweisungen. Typefelder einrücken. zwischen Sinnabschnitten eine Leerzeile einführen, und überhaupt die Abschnitte mal stärker nach Sinn sortieren. Du sortierst ja in deinem Code folgendermaßen: Erst lädst du alle Bilder, dann setzt du einen Font, dann einen Kommentar für die Zielscheibe, dann erst die Ladeanweisung für die Zielscheibe, dann die ganzen Maskimageanweisungen. Nimm die Maskimageanweisungen lieber direkt zu den Stellen dazu, wo du das Bild lädst, weil du dann alles für das eine Bild direkt beisammen hast und bei Änderungen nicht lange alles für dieses Bild aus dem ganzen Code zusammen suchen musst. Zudem solltest du genau EINE Hauptschleife haben, an deren Anfang du ein CLS setzt, und an deren Ende ein FLIP steht. Im Code mittendrin dann aber kein cls und flip mehr benutzen! |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
So ungefähr würde ich es einrücken. Die Kommentare
sind nun natürlich zu viele, mache ich aber bei großen Projekten so. Ist recht übersichtlich, normalerweise würde ich alles was in einem Block steht dann auch einrücken. Code: [AUSKLAPPEN] Graphics3D 200,200,0,2
AppTitle "Dart ©darth" ;hahaha :) "wortspiel" Type shot ;für geschossene punkte Field sx ;X Koordninate Field sy ;Y Koordinate End Type While Not KeyHit(1) Cls ;*** DRAW *** ;mittelpunkte der kreise jeweils 100/100 ;radien von 125 in 25er schritten runter (125,100,75,50,25,5) ;kreise alternierend weiss/schwarz ;*** Zielscheibe zeichnen *** Color 255,255,255 Oval -25,-25,250,250 Color 0,0,0 Oval 0,0,200,200 Color 255,255,255 Oval 25,25,150,150 Color 0,0,0 Oval 50,50,100,100 Color 255,255,255 Oval 75,75,50,50 Color 0,0,0 Oval 95,95,10,10 ;*** /Zielscheibe zeichnen *** ;*** Schuesse *** draw_shots() ;*** /Schuesse *** ;*** Aktuelles Ziel *** Color 200,0,0 Oval mx-3,my-3,6,6 ;*** /Aktuelles Ziel *** ;*** HUD zeichnen *** Text 175,5,point ;punktzahl If no>0 Then Text 175,15,point/no ;durchschnittliche pt pro schuss ;*** /HUD zeichnen *** ;*** /DRAW *** If MouseHit(1) Then ;mx (x koordinate der selektierung) und my (y koordinate der selektierung) ;phytagoras! => (Xmitte-mx)^2+(Ymitte-my)^2=radius^2 ; => d.h es muss grösser als kleinerer radius und kleiner als grösserer radius sein abstand#=Sqr((100-mx)^2+(100-my)^2) If abstand<5 Then point=point+50 ElseIf abstand<25 point=point+40 ElseIf abstand<50 point=point+30 ElseIf abstand<75 point=point+20 ElseIf abstand<100 point=point+10 ElseIf abstand<125 point=point+5 End If s.shot=New shot : s\sx=mx : s\sy=my no=no+1 End If If MilliSecs()-settime>250 Then ;"timer" funktion settime=MilliSecs() mx=Rand(0,200) ;Für mx und my brauchen wir nur ganze Zahlen, keine Floats my=Rand(0,200) ;Rnd gibt auch Kommastellen mit an und das RUnden braucht dann wieder Zeit EndIf Flip Wend End ;*** FUNCTIONS *** Function DRAW_SHOTS() For s.shot=Each shot ;geschossene punkte malen Color 125,125,125 Oval s\sx-3,s\sy-3,6,6 Next End Function EDIT: Ach, und das frisst auch nur unnütz performance. Man kann die Farbe, solange diese nicht pro schuss individuell ist, auch vor der FN schleife deklarieren Code: [AUSKLAPPEN] Function DRAW_SHOTS()
Color 125,125,125 For s.shot=Each shot ;geschossene punkte malen Oval s\sx-3,s\sy-3,6,6 Next Color 255,255,255 End Function Wie man sieht habe ich ein Color 255,255,255 angehangen. Durch solche Code Konventionen für sich selber kann man falsche Farben umgehen. entweder man stellt die Farbe nach jedem verstellen wieder auf 255,255,255 oder man setzt die Farbe vor jedem Block der etwas anzeigt wieder auf 255,255,255. Das ganze ist bei Max noch etwas verherender als bei BB. Da werden dann auch grautöne eingefärbt und da kann solch ein Fehler echt nerven. Such dir nen Stil aus IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group