C# console app program meghatározott ideig fusson?
A feladat az lenne, hogy a játékos az elején megadhatja hány percig szeretne játszani a játékkal. Amikor ez lejárt, elmentem az előre bekért nevét, a játék alatt elért pontszámát egy pontszámok szerint csoportosított txt-be.
(Nem értem ennek mi értelme, de az időt elvileg nem kell kimenteni.) Valaki tud rá egyszerű megoldást?
az app többi része hogyan néz ki?
az elején amikor bekéred mennyit játszik (vagy ha fix, akkor abból számolsz) hozzáadod az induláshoz az időt és ellenőrzöd, hogy a MOST az nagyobb egyenlő e, mint a vég időpont
Kimásolom, ha az egyszerűbb. Gondolom Mainbe kéne tenni egy timert. Csak nem tudom rá a parancsot, hogy szépen számoljon vissza, és a letelt MPek után lépjen tovább egy új ciklusba.
(játék vége, eredmény mentés).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BejewelledBlitz
{
class Start
{
public static int [,] CreateArray(int m, int n)
{
int[,] playfield = new int[m, n];
return playfield;
}
public static void FillArray(int[,] array)
{
Random rnd = new Random();
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
array[i, j] = rnd.Next(1,8);
}
}
}
public static void Print(int[,] arr)
{
int rowLength = arr.GetLength(0);
int colLength = arr.GetLength(1);
for (int i = 0; i < rowLength; i++)
{
for (int j = 0; j < colLength; j++)
{
Console.Write(string.Format(" {0} ", arr[i, j]));
}
Console.Write(Environment.NewLine + Environment.NewLine);
}
}
public static string AskDataName()
{
Console.WriteLine("You can set your name here");
return Console.ReadLine();
}
public static int AskDataMinute()
{
Console.WriteLine("How many minutes would you like to play BejeweledBlitz?");
return Convert.ToInt32(Console.ReadLine());
}
//kell-e ez egyáltalán?
public static void FindPairsStart (int [,]arr)
{
int exceed = 0;
Random rnd = new Random();
for (int i = 0; i < arr.GetLength(0)-1; i++)
{
for (int j = 0; j < arr.GetLength(1)-1; j++)
{
if (arr[i,j]==arr[i,j+1]|| arr[i, j] == arr[i+1, j ])
{
exceed = arr[i, j];
arr[i, j] = rnd.Next(1, 10 - exceed);
}
}
}
}
}
class Game
{
public static void Change(int[,] playfield,int m, int n)
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
do
{
Console.WriteLine("Add valid numbers for the change");
Console.WriteLine("Give the first coordniate(row) of the first jewel you want to change");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Give the second coordniate(coloumn) of the first jewel you want to change");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Give the first coordniate(row) of the second jewel you want to change");
c = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Give the second coordniate(coloumn) of the second jewel you want to change");
d = Convert.ToInt32(Console.ReadLine());
}
//addig kéri amíg nem szomszédosakat ad meg, legyenek m-nél n-nél kisebbek, legyen mellette ugyanolyan
while ((a != c && b != c) || ((a == c) && (b - 1 != d) && (b + 1 != d)) || ((b == d) && (a - 1 != c) && (a + 1 != c)) || a >= m || b >= n || c >= m || d >= n && (playfield[a - 1, b - 1] != playfield[a, b - 1] || playfield[a - 1, b - 1] != playfield[a - 1, b] || playfield[c - 1, d - 1] != playfield[c, d - 1] || playfield[c - 1, d - 1] != playfield[c - 1, d] /*||playfield[c - 1, d - 1] != playfield[c, d - 2]*/));
int temp1 = playfield[c - 1, d - 1];
int temp2 = playfield[a - 1, b - 1];
playfield[a - 1, b - 1] = temp1;
playfield[c - 1, d - 1] = temp2;
}
public static void DissapearAndFallAndGenerateNew(int [,] playfield)
{
}
}
class Program
{
static void Main(string[] args)
{
const int m = 5;
const int n = 5;
string name = Start.AskDataName();
int gametime = Start.AskDataMinute();
int [,] playfield= Start.CreateArray(m, n);
Start.FillArray(playfield);
Start.FindPairsStart(playfield);
Start.Print(playfield);
Game.Change(playfield,m,n);
Start.Print(playfield);
Console.ReadLine();
}
}
}
Timer t = new timer
Majd megadod hogy a bekért érték az legyen a t. Vigyázz, az itt megadott érték milisec, szóval ha percet kérsz be akkor t=bekertszam*60*60
Eztán elindítod a timert, annak funkciójaként meg megadod hogy írja ki hogy játék vége illetve hogy mentse az eredményt
inkább: X*1000*60
Millisec és sec között 1000 a váltószám
kérdező a google gyorsan segített :)
ezt esetleg próbáld meg, ha van kérdésed írj
A stackoverflow-s sem segít.Valahogy nem értem mit akar.
const int m = 5;
const int n = 5;
string name = Start.AskDataName();
Timer t = new Timer(TimerCallback, null, 0, 2000);
int gametime = Start.AskDataMinute();
t = gametime * 60 * 1000;
int [,] playfield= Start.CreateArray(m, n);
Start.FillArray(playfield);
Start.FindPairsStart(playfield);
Start.Print(playfield);
Game.Change(playfield,m,n);
Start.Print(playfield);
Console.ReadLine();
Error CS1729 'Timer' does not contain a constructor that takes 4 arguments
Error CS0029 Cannot implicitly convert type 'int' to 'System.Timers.Timer'
próbáld ki ezt a kódot külön projektbe hátha megérted kicsit:
using System;
using System.Collections.Generic;
using System.Threading;
namespace TimerTeszt {
class Program {
static void Main(string[] args) {
// GameTime val
int gametime = 0;
// Input
string input = "";
// Amíg a játék időt nem adták meg megfelelően (nem negatív és nem 0)
while(!Int32.TryParse(input, out gametime) || gametime <= 0) {
// Adatbekérés
Console.WriteLine("Add meg hány másodpercig akarsz játszani:");
input = Console.ReadLine();
}
// Időzítő indítása
Timer t = new Timer(TimerCallback, null, gametime*1000, 0);
// TODO: játék
Console.ReadLine();
}
// Időzítő CallBack
private static void TimerCallback(Object o) {
Console.WriteLine("Az idő lejárt!");
}
}
}
Szerintem úgy is meglehetett volna csinálni:
DateTime.Now.Minute és DateTime.Noe.Hour és ennél amennyi időt megadott a játékos annyit hozzá adsz.Ez mondjuk elég fapados megoldás.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!