tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
232
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sinni800 sinni800 ist offline Mitglied Bronze
    Registriert seit
    Oct 2007
    Beiträge
    43
    Also... Da gibts so ein Online Game, dort gibt es vier Währungen...

    Gold, Silber, Kupfer, Zinn

    100 Zinn sind 1 Kupfer, und so weiter!

    Ich soll eine Art Kassenbuch entwickeln, so weit so gut, er trägt es in die Datenbank richtig ein!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
        Protected Sub FormView1_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs) Handles FormView1.ItemInserting
            'Response.Write(CType(FormView1.FindControl("G"), TextBox).Text)
     
            'e.Values(3)
            CType(FormView1.FindControl("MengeTextBox"), TextBox).Text = (Convert.ToUInt32((getUI("G") * 1000000) + (getUI("S") * 10000) + (getUI("K") * 100) + (getUI("Z")))).ToString
            e.Values(2) = (Convert.ToUInt32((getUI("G") * 1000000) + (getUI("S") * 10000) + (getUI("K") * 100) + (getUI("Z")))).ToString
     
            Dim Einnahme As Boolean = CType(FormView1.FindControl("chk_Einnahme"), CheckBox).Checked
            If Einnahme = False Then
                Dim x As Integer = Convert.ToInt32(CType(FormView1.FindControl("MengeTextBox"), TextBox).Text)
                x = x * (-1)
                CType(FormView1.FindControl("MengeTextBox"), TextBox).Text = x.ToString
                e.Values(2) = x.ToString
            End If
        End Sub
     
     
        Function getUI(ByVal s As String) As Integer
            Try
                Return Convert.ToInt32(CType(FormView1.FindControl(s), TextBox).Text)
     
            Catch ex As Exception
                Response.Write(ex.Message)
                Response.Write("<br /> TEXT: " + CType(FormView1.FindControl(s), TextBox).Text)
            End Try
        End Function

    Er wandelt alles in die kleinste Währung um, und schiebt die in die Datenbank.

    Jetzt muss das natürlich auch in einzelne Währungen angezeigt werden! Und da liegt mein Problem, wie mach ich das?

    Bei 1 000 000 Zinn sinds ja
    1 Gold, 00 Silber, 00 Kupfer, 00 Zinn...

    Habs so versucht:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
        Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DataBound
            Dim d As GridViewRowCollection
            d = GridView1.Rows
            Dim f As GridViewRow
     
            For Each f In d
                Dim wert As Int64 = f.Cells(4).Text
                f.Cells(4).Text = ""
                append(f.Cells(4), "<img src=w/gold.png /> " + Convert.ToInt32(wert / 1000000).ToString)
                append(f.Cells(4), "<img src=w/silber.png /> " + Convert.ToInt32(wert / 10000 - Convert.ToInt32(wert / 1000000) * 100).ToString)
                append(f.Cells(4), "<img src=w/kupfer.png /> " + Convert.ToInt32(wert / 100 - Convert.ToInt32(wert / 1000000) * 100 - Convert.ToInt32(wert / 10000) * 100).ToString)
                append(f.Cells(4), "<img src=w/zinn.png /> " + Convert.ToInt32(wert - Convert.ToInt32(wert / 1000000) * 100 - Convert.ToInt32(wert / 10000) * 100 - Convert.ToInt32(wert / 100) * 100).ToString())
     
            Next
        End Sub
     
        Sub append(ByRef cell As TableCell, ByVal content As String)
            cell.Text = cell.Text + content
        End Sub

    Funktioniert aber nur bis Silber, wenn überhaupt..

    Krieg ich das irgendwie besser hin? Den Integer könnte ich doch auch in der Theorie parsen, nur wie? Und wie geh ich da mit allen Möglichkeiten um?
     

  2. #2
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Ich denke das der Modulo-Operator dich weiter bringt, einfach mal nach n - dieser liefert dir den Rest aus einer Division:

    Code :
    1
    
    3202000 % 1000000 = 202000
     
    http://dirkgoldecker.spaces.live.com

    . Microsoft Certified Technology Specialist
    . Microsoft Certified Professional Developer
    |-> Web Applications

  3. #3
    sinni800 sinni800 ist offline Mitglied Bronze
    Registriert seit
    Oct 2007
    Beiträge
    43
    Also habs probiert, hab jetz bissle rumprobier und

    Code :
    1
    2
    3
    4
    5
    6
    
     
                append(f.Cells(4), "   <img src=w/gold.png /> " + (1000000 \ wert).ToString())
     
                append(f.Cells(4), "<img src=w/silber.png /> " + (10000\(wert Mod 1000000)).ToString)
                append(f.Cells(4), "<img src=w/kupfer.png /> " + (wert Mod 10000 \ 100).ToString)
                append(f.Cells(4), "<img src=w/zinn.png /> " + (wert Mod 100).ToString)
    zusammengereimt

    Ging aber nich so wie ichs mir dachte, inklusive cannot divide by zero fehler.

    EDIT: Habs jetz mehr oder weniger hingebracht, der rechnet richtig, mit MOD ging das ganz gut, erledigt.
    Geändert von sinni800 (12.07.08 um 10:35 Uhr)
     

Ähnliche Themen

  1. Onlinegame
    Von neosion im Forum PHP
    Antworten: 4
    Letzter Beitrag: 14.11.08, 15:47
  2. Suche Design für ein Onlinegame
    Von TAW im Forum Stellenangebote (unentgeltlich)
    Antworten: 1
    Letzter Beitrag: 27.10.07, 10:50
  3. Onlinegame mit PHP&SQL?
    Von DePepper im Forum PHP
    Antworten: 17
    Letzter Beitrag: 07.03.06, 17:21
  4. Zugriffszeiten bei Onlinegame.
    Von Katzehuhn im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 21.06.05, 19:16
  5. Onlinegame - Wie geht sowas****?
    Von SHViperia im Forum PHP
    Antworten: 21
    Letzter Beitrag: 05.03.03, 20:26