[b+] Nukleare Kettenraktion
Übersicht

![]() |
SmilyBetreff: [b+] Nukleare Kettenraktion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich habe eine kleine Simulation für eine Nukleare Kettenraktion geschrieben. Viel zu erklären gibts eigentlich nicht. Schauts euch einfach mal an ^^ Gruß, Smily0412 Code: [AUSKLAPPEN] Type Atom Field X Field y End Type Type Nukleon Field X# Field Y# Field RI Field e# End Type Win = CreateWindow("Nukleos", 100,100, 200, 500,0,33) CreateLabel("Höhe:",5,0,190,15,win) CreateLabel("Breite:",5,40,190,15,win) CreateLabel("Atome:",5,100,190,15,win) CreateLabel("Nukleonen per Atom:",5,140,190,15,win) CreateLabel("Nukleonen Geschwindigkeit:",5,180,190,15,win) CreateLabel("Nukleonen Energie Verlust:",5,220,190,15,win) CreateLabel("Nukleonen am Start:",5,260,190,15,win) CreateLabel("Atomgröße in px:", 5, 320, 190, 15, win) CreateLabel("Nukleonengröße in px:", 5, 360, 190, 15, win) gx_f = CreateTextField(5,15,190,20,win) gy_f = CreateTextField(5,55,190,20,win) atoms_f = CreateTextField(5,115,190,20,win) nukleons_per_atom_f = CreateTextField(5,155,190,20,win) nukleons_speed_f = CreateTextField(5,195,190,20,win) nukleons_e_lost_f = CreateTextField(5,235,190,20,win) nukleons_start_f = CreateTextField(5,275,190,20,win) atom_size_f = CreateTextField(5,335,190,20,win) nukleon_size_f = CreateTextField(5,375,190,20,win) bounce_f = CreateButton("Abprallen an wand",5,400,190,20,win,2) SetGadgetText gx_f,800 SetGadgetText gy_f,600 SetGadgetText Atoms_f, 800 SetGadgetText nukleons_per_atom_f, 3 SetGadgetText nukleons_speed_f, 1 SetGadgetText nukleons_e_lost_f, 1 SetGadgetText nukleons_start_f, 5 SetGadgetText atom_size_f, 5 SetGadgetText nukleon_size_f, 1 SetButtonState bounce_f, 0 Gobutton = CreateButton("GO",5,440,190,20,win) optionsset = CreateComboBox(5, 465, 150, 20, win) setbutton = CreateButton("set", 160,465,35,20,win) AddGadgetItem optionsset,"Standart" AddGadgetItem optionsset,"Atomkraftwerk - Normal" AddGadgetItem optionsset,"Atomkraftwerk - Störung" SelectGadgetItem optionsset, 0 Atoms = 500 GX = 800 GY = 600 nukleons_per_atom = 5 nukleon_speed# = 5 nukleon_e_lost# = 1 nukleons_start = 10 bounce = 0 atom_size = 5 nukleon_size = 1 SeedRnd MilliSecs() atomline(270,175,270,225,10) atomline(270,175,290,225,10) atomline(290,175,290,225,10) atomline(310,175,310,225,10) atomline(310,225,330,225,5) atomline(330,175,330,225,10) atomline(350,175,350,225,10) atomline(370,225,350,200,5) atomline(370,175,350,200,5) atomline(390,175,390,225,10) atomline(390,225,410,225,5) atomline(430,175,430,225,10) atomline(430,180,450,180,5) atomline(430,200,450,200,5) atomline(430,225,450,225,5) atomline(470,175,470,225,10) atomline(490,175,490,225,10) atomline(470,180,490,180,5) atomline(470,225,490,225,5) atomline(510,225,530,225,5) atomline(510,200,530,200,5) atomline(510,180,530,180,5) atomline(510,175,510,200,5) atomline(530,200,530,225,5) nukleon.nukleon = New nukleon nukleon\x = 0 nukleon\y = 0 nukleon\ri = 38 nukleon\e = 255 nukleon.nukleon = New nukleon nukleon\x = 800 nukleon\y = 0 nukleon\ri = 180-38 nukleon\e = 255 ;For c = 1 To nukleons_start ;nukleon.nukleon = New nukleon ;nukleon\x = gx/2 ;nukleon\y = gy/2 ;nukleon\e = 255 ;nukleon\ri = Rand(0,359) ;next Graphics 800,600,16,2 ftimer = CreateTimer(60) HidePointer() Repeat If Not KeyDown(28) Cls WaitEvent(1) If EventID() = $401 Select EventSource() Case gobutton Delete Each nukleon Delete Each atom gx = TextFieldText(gx_f) gy = TextFieldText(gy_f) atoms = TextFieldText(atoms_f) nukleons_per_atom = TextFieldText(nukleons_per_atom_f) nukleon_speed# = TextFieldText(nukleons_speed_f) nukleon_e_lost# = TextFieldText(nukleons_e_lost_f) nukleons_start = TextFieldText(nukleons_start_f) atom_size = TextFieldText(atom_size_f) nukleon_size = TextFieldText(nukleon_size_f) bounce = ButtonState(bounce_f) EndGraphics Graphics gx,gy,16,2 HidePointer() For c = 1 To atoms atom.atom = New atom atom\x = Rand(atom_size/2,gx-atom_size/2) atom\y = Rand(atom_size/2,gy-atom_size/2) Next For c = 1 To nukleons_start nukleon.nukleon = New nukleon nukleon\x = gx/2 nukleon\y = gy/2 nukleon\e = 255 nukleon\ri = Rand(0,359) Next Case setbutton Select SelectedGadgetItem(optionsset) Case 0 SetGadgetText gx_f,800 SetGadgetText gy_f,600 SetGadgetText Atoms_f, 800 SetGadgetText nukleons_per_atom_f, 3 SetGadgetText nukleons_speed_f, 5 SetGadgetText nukleons_e_lost_f, 1 SetGadgetText nukleons_start_f, 5 SetGadgetText atom_size_f, 5 SetGadgetText nukleon_size_f, 1 SetButtonState bounce_f, 0 Case 1 SetGadgetText gx_f,800 SetGadgetText gy_f,600 SetGadgetText Atoms_f, 800 SetGadgetText nukleons_per_atom_f, 1 SetGadgetText nukleons_speed_f, 5 SetGadgetText nukleons_e_lost_f, 0.1 SetGadgetText nukleons_start_f, 10 SetGadgetText atom_size_f, 5 SetGadgetText nukleon_size_f, 1 SetButtonState bounce_f, 1 Case 2 SetGadgetText gx_f,800 SetGadgetText gy_f,600 SetGadgetText Atoms_f, 800 SetGadgetText nukleons_per_atom_f, 3 SetGadgetText nukleons_speed_f, 3 SetGadgetText nukleons_e_lost_f, 1 SetGadgetText nukleons_start_f, 10 SetGadgetText atom_size_f, 5 SetGadgetText nukleon_size_f, 1 SetButtonState bounce_f, 1 End select End select End If Color 255,255,255 If MouseHit(1) Then atom.atom = New atom atom\x = MouseX() atom\y = MouseY() End if If MouseDown(2) And (Not create_nukleon) create_nukleon = 1 create_nukleon_x = MouseX() create_nukleon_y = MouseY() End if If create_nukleon If Not MouseDown(2) create_nukleon = 0 nukleon.nukleon = New nukleon nukleon\x = create_nukleon_x nukleon\y = create_nukleon_y nukleon\e = 255 nukleon\ri = ATan2(mousey()-create_nukleon_y,mousex()-create_nukleon_x) MoveMouse create_nukleon_x, create_nukleon_y End if End if atom_count = 0 For atom.atom = Each atom atom_count = atom_count + 1 delatom = 0 Oval atom\x-atom_size/2, atom\y-atom_size/2, atom_size, atom_size For nukleon.nukleon = Each nukleon If RectsOverlap(nukleon\x-nukleon_size/2,nukleon\y-nukleon_size/2,nukleon_size,nukleon_size,atom\x-atom_size/2, atom\y-atom_size/2, atom_size, atom_size) And (not delatom) ; Stop For c = 1 To nukleons_per_atom neu.nukleon = New nukleon neu\x = atom\x neu\y = atom\y neu\e = 255 neu\ri = Rand(0,359) next delatom = 1 Delete nukleon.nukleon End if Next If delatom Then Delete atom.atom Next nukleon_count = 0 For nukleon.nukleon = Each nukleon nukleon_count = nukleon_count + 1 Color nukleon\e, nukleon\e, nukleon\e Oval nukleon\x-nukleon_size/2,nukleon\y-nukleon_size/2,nukleon_size,nukleon_size ; Text nukleon\x+2,nukleon\y+2,nukleon\ri nukleon\x = nukleon\x + cos(nukleon\ri) * nukleon_speed nukleon\y = nukleon\y + sin(nukleon\ri) * nukleon_speed nukleon\e = nukleon\e - nukleon_e_lost If nukleon\x > GX + nukleon_size Or nukleon\x < -nukleon_size Or nukleon\y > gy+nukleon_size Or nukleon\y < -nukleon_size Then If bounce ; nukleon\ri = -nukleon\ri nukleon\ri = (nukleon\ri + 360) Mod 360 Select true Case nukleon\x > GX + nukleon_size Or nukleon\x < -nukleon_size nukleon\ri = -nukleon\ri Case nukleon\y > GY + nukleon_size Or nukleon\y < -nukleon_size nukleon\ri = -nukleon\ri + 180 End Select Else Delete nukleon.nukleon End if ElseIf nukleon\e < 1 Delete nukleon.nukleon End if Next Color 100,100,100 Text 0,0,atom_count + " - " + nukleon_count Plot MouseX(), MouseY() If create_nukleon Line MouseX(), MouseY(), create_nukleon_x, create_nukleon_y Color 255,255,255 Oval create_nukleon_x-10,create_nukleon_y-10,20,20,0 ri = ATan2(mousey()-create_nukleon_y,mousex()-create_nukleon_x) Line create_nukleon_x, create_nukleon_y, create_nukleon_x+cos(ri)*10,create_nukleon_y+sin(ri)*10 else Oval MouseX()-10,mousey()-10,20,20,0 Line MouseX()-10,mousey(),mousex()+10,mousey() Line MouseX(),mousey()-10,mousex(),mousey()+10 End if flip Until EventID() = $803 Or KeyHit(1) Function atomline(x1#,y1#,x2#,y2#,c#) For create = 1 To c atom.atom = New atom atom\x = x1 + (x2-x1)/c*create atom\y = y1 + (y2-y1)/c*create Next End function |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich werde das mal in BMax umsetzen da ich kein B+ habe ![]() |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier ist eine Exe-version:
http://phpprogger.ph.funpic.de/nukleos.exe |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Smily0412
jup Danke ![]() |
||
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
es werden viel zuviele neutronen ausgesandt :O
bei einer kernspaltung in einem akw entstehen 2-3 neutronen, bei dir sinds 6-8 (wenn ich richtig zählte) ... hmm... vllt kann man das irgendwo einstellen *such* |
||
Diese Signatur ist leer. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sry für die Verspätete Antwort, hab den Threat erst jetzt wiederentdeckt.
Bei meiner Auflösung von 1600*1200 müsste eigentlich ein Tool-fenster zu sehen sein. Wenn du eine kleine Auflösung hast, dass müsstest du mal das GFrafikfenster zur Seite schieben. wahrscheinlich hat sich das Toolfenster darunter versteckt ^^ |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group