Same parameters type

Status
Niet open voor verdere reacties.

JereDeg

Gebruiker
Lid geworden
3 nov 2009
Berichten
9
Ik ben bezig een "race" spel aan het programeren, ik heb 3 klassen: Wage, CircuitDeel en Circuit.

De bedoeling is dat wagen een merk heeft, verchillende piloten en een snelheid.

Mijn circuitdeel moet zogezegd of wel recht (100% van mijn maximale snelheid) en krom (lagere percentage van mijn max. snelheid) en ze bevaten de argument van lengte (van het stuk)

Mijn cuircuit klasse bevat enkel twee methoden, nl. DeelToeveoegen (het toeveoegen van delen die gemaakt worden in mijn klasse circuitDeel) en natuurlijk racen die de snelheid gaat berekenen aan de hand van de lengte en wel of niet krom zijn van mijn stuk circuitDeel...

Ik ben intussen bezig met mijn Wagen klasse te maken en heb dus dit:

class Wagen
{
double snelheid = 0;
string merk = "";
string pilootNaam = "";

public Wagen(string merk)
{
this.merk = merk;
}

public string Merk
{
get
{
return merk;
}
}

public Wagen(double snelheid)
{
this.snelheid = snelheid;
}

public double Snelheid
{
get
{
return snelheid;
}
}

public Wagen (string pilootNaam)
{
this.pilootNaam = pilootNaam;
}

public string Piloot
{
get
{
return pilootNaam;
}

set
{
pilootNaam = value;
}
}
}
}

maar bij :
public Wagen (string pilootNaam)
{
this.pilootNaam = pilootNaam;
}

zegt ie:

'OefRacen.Wagen' already defines a member called 'Wagen' with the same parameter

Weten jullie waarover ie het heeft??

Thanks
 
Je hebt 2 constructors die je een String meegeeft.
Nl:
Code:
public Wagen(string merk)
{
this.merk = merk;
}

en:
Code:
public Wagen (string pilootNaam)
{
this.pilootNaam = pilootNaam;
}

Waarom maak je niet een algemene constructor voor je klasse

Code:
Public Wagen(string naamPiloot, string wagenMerk, double wagenSnelheid) 
{
this.pilootNaam = naamPiloot;
this.merk = wagenMerk;
this.snelheid = wagenSnelheid;
}

Daarnaast is het aan te raden om de variabelen niet precies dezelfde namen te geven.
Je hebt zelf staan: pilootNaam in de klasse en pilootNaam in de constructor.
Dit kan verwarring opleveren ook al gebruik je this. ervoor.

Ook niet vergeten om de snelheid een Set te geven. Anders kan je de snelheid van de wagen niet aanpassen ;)
 
Laatst bewerkt:
Normaal staat de snelheid beperkt aan de hand van die percentage die op hun beurt afhakelijk zijn van het wel of niet krom zijn van het circuitdeel...

Kgaan subiet kijkne om hetgeen wat je gezegd hebt toe te passen...

Bedankt, Klaat je nog iets weten :)
 
Hey hey

Dankzij jou ben ik intussen "flink" opgeschoten maar ben ene nieuw probleem tegen gekomen...

Nl.

namespace OefRacen
{
class Circuit
{
ArrayList alDelen = new ArrayList();

public void DeelToevoegen(CircuitDeel cd)
{
alDelen.Add(cd);
}

public double Racen (double meter)
{
foreach (CircuitDeel cd in alDelen)
{
meter += cd.Racen(meter);
}
return meter;
}
}
}

Error 1 The best overloaded method match for 'OefRacen.CircuitDeel.Racen(bool)' has some invalid arguments

Error 2 Argument '1': cannot convert from 'double' to 'bool'

en het slaat hierop:

namespace OefRacen
{
class CircuitDeel
{
ArrayList alStukken = new ArrayList();

bool recht;
double lengte = 0;

public CircuitDeel(double lengte)
{
this.lengte = lengte;
}

public double Lentgte
{
get
{
return lengte;
}
}

public CircuitDeel(bool recht)
{
this.recht = recht;
}

public bool Recht
{
get
{
return recht;
}
}

public void DeelToeveoegen(CircuitDeel cd)
{
alStukken.Add(cd);
}

public double Racen(bool recht)
{
double meter = 0;
foreach (CircuitDeel cd in alStukken)
{
if (recht == true)
{
meter = lengte;
}
else
{
meter = lengte / 2;
}

}
return meter;
}

}
}

Someone?? :)

Bedankt.
 
Je hebt zo te zien een overloaded methode:

Deze staat in Circuitdeel:
Code:
public double Racen(bool recht)
{
}

En deze in circuit:
Code:
public double Racen (double meter)
{
}

Omdat het een overloaded methode is zal je hetzelfde type parameter moeten gebruiken.
 
Laatst bewerkt:
dat weet ik, maar ik heb die bool nodig om te weten als mijn deel recht is of niet want dan vermenigvuldig ik de lengte want zijn snelheid vertraagd (verkeerd getypt in mijn code)...

Dus ja, hoe zorg ik ervoor dat ik die probleem niet heb.???
 
Geef je hele code eens.
dan kunnen we het als geheel bekijken. kan het mogelijk ook eenvoudiger zijn om een oplossing voor te geven.
 
Klasse Wagen:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OefRacen
{
class Wagen
{
double snelheid = 0;
string merk = "";
string pilootNaam = "";

public Wagen(string merk, string pilootNaam)
{
this.merk = merk;
this.pilootNaam = pilootNaam;
}

public string Merk
{
get
{
return merk;
}
}

public string Piloot
{
get
{
return Piloot;
}

set
{
Piloot = value;
}
}

public Wagen(double snelheid)
{
this.snelheid = snelheid;
}

public double Snelheid
{
get
{
return snelheid;
}
}
}
}

Klasse CircuitDeel

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;

namespace OefRacen
{
class CircuitDeel
{
ArrayList alStukken = new ArrayList();

bool recht;
double lengte = 0;

public CircuitDeel(double lengte)
{
this.lengte = lengte;
}

public double Lentgte
{
get
{
return lengte;
}
}

public CircuitDeel(bool recht)
{
this.recht = recht;
}

public bool Recht
{
get
{
return recht;
}
}

public void DeelToeveoegen(CircuitDeel cd)
{
alStukken.Add(cd);
}

public double Racen(bool recht)
{
double meter = 0;
foreach (CircuitDeel cd in alStukken)
{
if (recht == true)
{
meter = lengte;
}
else
{
meter = lengte * 2;
}

}
return meter;
}

}
}

Klasse circuit

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;

namespace OefRacen
{
class Circuit
{
ArrayList alDelen = new ArrayList();

public void DeelToevoegen(CircuitDeel cd)
{
alDelen.Add(cd);
}

public double Racen (double meter)
{
foreach (CircuitDeel cd in alDelen)
{
meter += cd.Racen(meter);
}
return meter;
}
}
}

Error 1 The best overloaded method match for 'OefRacen.CircuitDeel.Racen(bool)' has some invalid arguments

Error 2 Argument '1': cannot convert from 'double' to 'bool'

Voila.

Nogmaals bedankt :)
 
IK heb het intussen gevonden, ik heb de bool weggedaan in mijn methode racen in klasse circuitdeel omdat ie zoizo gedeclareerd staat in mijn klasse zelf...

Wat ik wel heb gelaten is het inbreng van de gegeven "recht" tussen () maar hij vraagt achter een identifire... enig idee??

Thanks
 
Hey JereDeg,

ik heb je code herschreven.
zie hier.

Wagen
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OefRacen
{
    class Wagen
    {
        public string merk { get; set; }
        public string pilootNaam { get; set; }
        public double snelheid { get; set; }

        public Wagen()
        {
            this.merk = "";
            this.pilootNaam = "";
        }

        public Wagen(double snelheid)
        {
            this.snelheid = snelheid;
        }

        public Wagen(string merk, string pilootNaam)
        {
            this.merk = merk;
            this.pilootNaam = pilootNaam;
        }

        public Wagen(string merk, string pilootNaam, double snelheid)
        {
            this.merk = merk;
            this.pilootNaam = pilootNaam;
            this.snelheid = snelheid;
        }
    }
}

Circuit
Code:
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;

namespace OefRacen
{
    class Circuit
    {
        ArrayList alDelen = new ArrayList();

        public void DeelToevoegen(CircuitDeel cd)
        {
            alDelen.Add(cd);
        }

        public double Racen(double meter)
        {
            foreach (CircuitDeel cd in alDelen)
            {
                meter += cd.Racen();
            }
            return meter;
        }
    }
}

CircuitDeel
Code:
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;

namespace OefRacen
{
    class CircuitDeel
    {
        ArrayList alStukken = new ArrayList();

        public double lengte { get; set; }
        public bool recht { get; set; }

        public CircuitDeel()
        {
            lengte = 0;
        }

        public CircuitDeel(double lengte)
        {
            this.lengte = lengte;
        }

        public CircuitDeel(bool recht)
        {
            this.recht = recht;
        }

        public void DeelToeveoegen(CircuitDeel cd)
        {
            alStukken.Add(cd);
        }

        public double Racen()
        {
            double meter = 0;

            foreach (CircuitDeel cd in alStukken)
            {
                if (recht)
                    meter = lengte;
                else
                    meter = lengte * 2;
            }
            return meter;
        }
    }
}


1 ding snap ik niet. je gebruikt in de klasse CircuitDeel bij de methode Racen() een foreach loop maar je doet nix met de waarde cd.
Code:
public double Racen()
        {
            double meter = 0;

            foreach (CircuitDeel cd in alStukken)
            {
                if (recht)
                    meter = lengte;
                else
                    meter = lengte * 2;
            }
            return meter;
        }
 
Bedankt.

Ik had dat al een tijdje ingediend, heb een 7/10 behaald dus bedankt aan iedereen die geholpen heeft.
 
ik weet niet of je persee in puur c# wil programeren maar kijk eens naar XNA.
dat is een uitbreiding op c# speciaal voor games
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan