Kezdőoldal » Számítástechnika » Programozás » C# console app program meghatá...

C# console app program meghatározott ideig fusson?

Figyelt kérdés

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?



2018. ápr. 28. 22:35
 1/10 anonim válasza:
0%
Toolboxról húzz fel egy timert
2018. ápr. 28. 22:46
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:
Én még elég kezdő vagyok programozásban. Ha a toolbox keresőbe beírom, hogy timer, semmit nem dob ki. (Console appot kell írnom). Ki tudnád fejteni kicsit részletesebben?
2018. ápr. 28. 22:49
 3/10 anonim ***** válasza:

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

2018. ápr. 28. 22:52
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:

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();

}

}

}

2018. ápr. 28. 23:06
 5/10 anonim ***** válasza:

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

2018. ápr. 28. 23:09
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

inkább: X*1000*60

Millisec és sec között 1000 a váltószám


kérdező a google gyorsan segített :)

[link]

ezt esetleg próbáld meg, ha van kérdésed írj

2018. ápr. 28. 23:16
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

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'

2018. ápr. 28. 23:32
 8/10 A kérdező kommentje:
Azt mondta a tanár, hogy elfogadja, ha beteszek egy számlálót, mert ezt még nem tanultuk. Csak gondoltam, megpróbálom legalább megérteni a működését, később még hasznos lehet.
2018. ápr. 28. 23:36
 9/10 anonim ***** válasza:

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!");

}

}

}

2018. ápr. 28. 23:57
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:

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.

2018. máj. 1. 22:44
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!