Avatar billede hoeks Nybegynder
15. marts 2009 - 15:53 Der er 3 kommentarer

Hjælp til ligning, der kan simulere en brand.

Hej Eksperter

Vi er på studiet gået igang med at udvikle vores første computerspil i Java. Vi har valgt, at man skal styre en Pyroman, der skal løbe rundt i nogle byer og sætte ild til bygninger. Hvorvidt vores pyroman har held til at sætte ild til en bygning skal bestemmes af en række sammenspillende faktorer. Faktorerne er som følger:

Firepower: hvor meget kraft der er i det våben han bruger. Jo mere Fp jo større sandsynlighed for, at der går ild i bygningen

Pyro-Level: Level'en på pyromanen. Dvs jo højere level, jo højere "chance" for at der bliver sat ild til det.

Distance: Distance beskriver hvor langt brandmanden er væk fra ilden. Jo tættere han er på, jo større chance er der for, at han får slukket branden.

Hårdhedsgrad: Hårdheden af materialet af den bygning man sætter ild til. Jo hårdere, jo sværere at sætte ild til.

Slutteligt skal der være en math-random funktion der gør, at man aldrig 100% kan regne ud hvad udfaldet af branden bliver.

Værdierne kan være fra 1-100 i dem alle 4.(og hvis det passer dårligt, kan vi sagtens lave disse tal om).

Er det muligt for nogen af jer, at finde på en ligning, der kan simulere denne ildpåsættelse?

I kan se lidt mere om spillet her: http://pyro-man.blogspot.com/


Jeg håber I forstår mit spørgsmål :)


Ved ikke lige om jeg har fået formuleret mig ordentligt, men ellers må I jo lige spørge :)
Avatar billede sbeier Nybegynder
16. marts 2009 - 17:36 #1
tjah.. hvis det hele skal have samme vægt kan du bare summe det sammen, og checke om summen er over en bestemt værdi

int sum = fp + lvl + (101-dist) + (101-hardness) + (random.nextInt(100) + 1);

det giver maks et tal på 500. Hvis du eksempelvis siger at hvis det tal er over 250 har han sucess med ildpåsættelsen, så har han ca 50% chance hvis alle 4 attributer er 50.
Avatar billede superanden Nybegynder
16. marts 2009 - 19:04 #2
Lidt dejlig matematik (taget fra matematik 1, på 1.semester på DTU så det burde være til at klare).

Der er ligninger som tager forbehold for vind og uden.

http://www.vedbaek-rideklub.dk/SkovBrandPub07.pdf
Avatar billede hoeks Nybegynder
18. marts 2009 - 12:40 #3
Hej igen. Tak for jeres inputs. Vi endte med at lave denne simple model. Den er ikke færdig endnu, men så vidt vi kan se fungerer det meget fint. Smid et svar, så skal jeg gerne give points for gode inputs :)

- Og hvis nogen af jer kan se en dum fejl i det, så sig endelig til....

public class Fire {

    double PyroLevel = 1; // 1-100
    double Distance = 80; // 3 distances: 20 / 50 / 80
    double Firepower = 10;// 3 tal: Tændstik: 10 FlameThrower: 60 Bombe: 100
    double Ildkraft = PyroLevel + Distance + Firepower;
    double Hardness = 30;// 30 er minimum og 279 er max for hardness. Hardness tilpasser vi
    // således at resten af ligningen giver et tal vi kan arbejde med.
    int Gold = 20; // Lav reference, således at Gold kommer fra Building-klassen

    public Fire() {
    }

    public void makeFire() {
   

        double SuccesKriterie = Ildkraft / (Hardness); // gang med math random eks.[0.7 - 1.3]
        System.out.println(SuccesKriterie);


        if (Ildkraft > Hardness) {
            GiveXp(); // Vi kører giveXp metoden.
            // Vi giver ham en level, for afbrændt bygning
            System.out.println("Du har sat ild til bygningen, og du har stjålet " + Gold + " Guld.");
            System.out.println("Du er nu Lvl " + (int)getPyroLevel() + " Pyroman");





        } else if (Ildkraft <= Hardness) {
            System.out.println("Det lykkedes ikke"); // Skal man evt miste guld/xp? Evt en takeXp funktion!

        }

        // her skal så trækkes tid fra Time-klassen!
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester