Sök
Visar resultat för taggar 'StreamWriter'.
Hittade 1 resultat
-
En funktion som lägger till pengar till spelet fungerar inte korrekt
sTeel8 postade ett ämne i Systemutveckling
Hej! Jag håller på att programmera ett program/spel i Visual Basic 2010, tanken i spelet är att man ska utforska det och låsa upp nya prestationer och funktioner. Jag har gjort en funktion som skriver till en fil hur mycket pengar man har på spelet, filen heter "money" och med katalogen och namnet med så heter den "SpringOS\data\money". Och när användaren får en prestation t ex när man stänger ett program i spelet för första gången, så får man en prestation och 10 mynt i spelet och då kör den denna koden: Label3.Text = "" Label4.Text = "" Label5.Text = "" Label6.Text = "" Label7.Text = "" Label8.Text = "" Label9.Text = "" Label10.Text = "" Label11.Text = "" Label3.Visible = False Label4.Visible = False Label5.Visible = False Label6.Visible = False Label7.Visible = False Label8.Visible = False Label9.Visible = False Label10.Visible = False Label11.Visible = False If My.Computer.FileSystem.FileExists("SpringOS\data\springos_ach_b") Then Else Dim frm5 As New Form5 frm5.Label1.Text = "You unlocked a new achievement!" frm5.Label2.Text = "Closing a program" frm5.Show() Dim writer As New IO.StreamWriter("SpringOS\data\springos_ach_b") writer.Write("") writer.Close() If My.Computer.FileSystem.FileExists("SpringOS\data\money") Then Dim reader As New IO.StreamReader("SpringOS\data\money") addmoney = reader.ReadToEnd reader.Close() addmoney = addmoney + 10 Dim writer_add_money As New IO.StreamWriter("SpringOS\data\money") writer_add_money.Write(addmoney) writer.Close() End If End If Och när användaren skriver "money" så ska den visa hur många mynt man har, och då kör den denna koden: Label3.Text = "" Label4.Text = "" Label5.Text = "" Label6.Text = "" Label7.Text = "" Label8.Text = "" Label9.Text = "" Label10.Text = "" Label11.Text = "" Label3.Visible = True If My.Computer.FileSystem.FileExists("SpringOS\data\money") Then 'This where the first problem happens, it's being used by another process Dim reader As New IO.StreamReader("SpringOS\data\money") '----------------------------- money = reader.ReadToEnd reader.Close() Label3.Text = "You have " & money & " coins" Else Dim writer As New IO.StreamWriter("SpringOS\data\money") writer.Write("0") writer.Close() Dim reader As New IO.StreamReader("SpringOS\data\money") money = reader.ReadToEnd reader.Close() Label3.Text = "You have " & money & " coins" End If Problemet är att när användaren får en prestation och skriver "money", då kommer det upp en ruta från Visual Basic 2010: "The process cannot access the file 'C:\Users\Viktor\documents\visual studio 2010\Projects\SpringOS\SpringOS\bin\Debug\SpringOS\data\money' because it is being used by another process." Det finns ett problem till. Ibland när man får en prestation, så kommer det upp en ruta från Visual Basic 2010 och där står det: "Conversion from string "" to type 'Double' is not valid." Det händer med "addmoney" (Public addmoney As String = 0). addmoney används för att lägga till mynt när man har klarat en prestation. Den läser av vad det står i money filen nu till "addmoney", sen så höjer den siffrorna med 10 och skriver ner det i filen "money" igen. Och när man startar spelet för första gången har man 0 mynt, och efter man har gjort en prestation så står det inget i filen (mycket konstigt). Jag hittar inga problem, varje "reader" och "writer" (Dim reader As New StreamReader("katalog + filnamn")) och (Dim writer As New StreamWriter("katalog + filnamn")) har haft reader.Close() eller writer.Close() . Spelet/programmet har 7 forms och över 1000 rader kod. Så kan nån hjälpa mig med detta problem? Den fullständiga koden får inte plats i Eforum, ni kan läsa den här på Google Drive: https://docs.google.com/document/d/1eQdvEuyebUqCzAvcff7gBJ3XPT60TkmWmTs-AZEH-80