Hjälp mig med mitt konsoll program!

Permalänk

Hjälp mig med mitt konsoll program!

Hejdär!
Jag är absolut noob, men vill ha hjälp med fåtal saker.
När man startar programmet så skall den fråga ifall jag vill starta servern eller om jag vill stänga av programmet. I framtiden så vill jag att man skall kunna uppdatera servern också genom detta program. Sen så stänger den av programmet ifall man trycker på Escape, eller startar servern om jag trycker på Enter.
När man trycker på Enter så vill jag att programmet startar följande .batch kod.

Batch Koden Den Skall Utföra
@echo off
cls
echo Protecting Minecraft Server from crashes...
title Minecraft Server Watchdog
color 3
:craftbukkit-1.2.5-R1.0
echo (%date%) (%time%) server started.
start /wait java -Xmx4G -Xms4G -jar C:\Users\Linus\Desktop\MinecraftServer\craftbukkit-1.2.5-R1.0.jar
echo (%date%) (%time%) WARNING: server closed or crashed, restarting.
goto craftbukkit-1.2.5-R1.0

Dold text

Jag har kommit såhär långt hittils:

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

namespace VoidGamingServer
{
class Program
{
static void Main(string[] args)
{
Console.Title = ("VoidGamingServer");

String name = Environment.UserName;
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("Press Escape to terminate at anytime.\r\n"); Console.WriteLine("Welcome " + name);
System.Threading.Thread.Sleep(2000);
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("Press the ESCAPE key to terminate now, or press ENTER to launch the server.");
while (Console.ReadKey(true).Key != ConsoleKey.Escape)
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Terminating...", Environment.ExitCode); System.Threading.Thread.Sleep(500);
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("\r\nLoading...");
Console.WriteLine("0%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("10%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("20%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("30%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("40%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("50%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("60%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("70%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("80%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("90%");
System.Threading.Thread.Sleep(5);
Console.WriteLine("100%");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Server Launching...\r\n");
System.Threading.Thread.Sleep(1000);
}
}
}

Dold text

Hur ska jag fortsätta nu? Hur gör jag så att den startar .batch koden efter att jag trycker på Escape? Hjälp mig, och beskriv på så enkel Svenska ni kan, är inte duktig på det här än!

Permalänk

Ingen snäll själ som kan hjälpa mig med mitt i-lands problem?

Permalänk
Medlem

Ser ut som java?
Är inte speciellt vass på någon programering men det enklaste är väl att använda if satser för knapptryckningarna och sedan ha batfilen som startar när man trycker ner en tangent?

Visa signatur

i7-6700K | MSI Z170A | MSI 1080 8GB | 16GB Kingston HyperX | Intel 600P 256GB | Samsung EVO Basic 840 250GB x2 raid 0 | Corsair RM 750W | 3 x Dell U2414H

Permalänk
Medlem

Varför har du en massa thread.sleep? känns som du skriver ut saker samt har en massa thread.sleep bara för att programmet ska se komplicerat ut tänk på att koden ska vara så optimerad som möjligt inte se coolt ut :).

inte min sorts programmering men det här kanske går att använda som grund/inspiration

using System; using System.Diagnostics; namespace VoidGamingServer { class Program { static void Main(string[] args) { Process process = null; bool alive = true; Console.WriteLine("write exit to close or start to start server"); while (alive) { switch (Console.ReadLine()) { case "exit": alive = false; if(process != null) process.Close(); break; case "start": Console.WriteLine("server starting"); process = Process.Start("batch sökväg"); Console.WriteLine("done"); break; } } } } }

och nej jag har inte testat den Den stoppar inte heller användaren från att starta batch filen flera gånger med det blir lätt att implementera. Det är också lätt att lägga till flera alternativ i switch satsen för att kunna uppdatera osv men då borde du dela upp de i olika metoder som man kallar på i switch satsen.

Permalänk
Hedersmedlem
Skrivet av LinusNeuman:

Ingen snäll själ som kan hjälpa mig med mitt i-lands problem?

Jag är rädd att den typen av inlägg som bara är till för att flytta tråden högre upp i trådlistningen är förbjudna enligt § 4 i reglerna. Det beror på att vi tycker att det är viktigt att alla får samma chans att få sina trådar uppmärksammade. Den här gången har jag inte låst din tråd på grund av detta, men tänk på det i fortsättningen.

Permalänk
Medlem

Varför har du gjort en fake loading? Syftar på detta

onsole.WriteLine("\r\nLoading..."); Console.WriteLine("0%"); System.Threading.Thread.Sleep(5); Console.WriteLine("10%"); System.Threading.Thread.Sleep(5); Console.WriteLine("20%"); System.Threading.Thread.Sleep(5); Console.WriteLine("30%"); System.Threading.Thread.Sleep(5); Console.WriteLine("40%"); System.Threading.Thread.Sleep(5); Console.WriteLine("50%"); System.Threading.Thread.Sleep(5); Console.WriteLine("60%"); System.Threading.Thread.Sleep(5); Console.WriteLine("70%"); System.Threading.Thread.Sleep(5); Console.WriteLine("80%"); System.Threading.Thread.Sleep(5); Console.WriteLine("90%"); System.Threading.Thread.Sleep(5); Console.WriteLine("100%"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Server Launching...\r\n"); System.Threading.Thread.Sleep(1000);

Permalänk
Medlem
Skrivet av Be4ten:

Varför har du gjort en fake loading?

haha precis det jag syftade på i min förra post

Permalänk
Skrivet av GAPa:

Jag är rädd att den typen av inlägg som bara är till för att flytta tråden högre upp i trådlistningen är förbjudna enligt § 4 i reglerna. Det beror på att vi tycker att det är viktigt att alla får samma chans att få sina trådar uppmärksammade. Den här gången har jag inte låst din tråd på grund av detta, men tänk på det i fortsättningen.

Förlåååååååt!!!!! Ska inte hända igen! NEVAR!
EDIT: Förresten, du kan ta bort den bump posten om du vill vettö!

Skrivet av Be4ten:

Varför har du gjort en fake loading? Syftar på detta

onsole.WriteLine("\r\nLoading..."); Console.WriteLine("0%"); System.Threading.Thread.Sleep(5); Console.WriteLine("10%"); System.Threading.Thread.Sleep(5); Console.WriteLine("20%"); System.Threading.Thread.Sleep(5); Console.WriteLine("30%"); System.Threading.Thread.Sleep(5); Console.WriteLine("40%"); System.Threading.Thread.Sleep(5); Console.WriteLine("50%"); System.Threading.Thread.Sleep(5); Console.WriteLine("60%"); System.Threading.Thread.Sleep(5); Console.WriteLine("70%"); System.Threading.Thread.Sleep(5); Console.WriteLine("80%"); System.Threading.Thread.Sleep(5); Console.WriteLine("90%"); System.Threading.Thread.Sleep(5); Console.WriteLine("100%"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Server Launching...\r\n"); System.Threading.Thread.Sleep(1000);

Skrivet av hampee94:

haha precis det jag syftade på i min förra post

För att det ser coolt ut!!!!! XD

Permalänk
Skrivet av gn1p:

Ser ut som java?
Är inte speciellt vass på någon programering men det enklaste är väl att använda if satser för knapptryckningarna och sedan ha batfilen som startar när man trycker ner en tangent?

Det är C#
Kan inte så mycket om if, men vet vad du menar, int ehur man gör det dock.. xD
men jag vill helst ha bat filen inbyggd!

Permalänk
Citat:

using System;
using System.Diagnostics;

namespace VoidGamingServer
{
class Program
{
static void Main(string[] args)
{
Console.Title = ("VoidGaming Server Launcher");
String name = Environment.UserName;
Process process = null;
bool alive = true;
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("Welcome " + name);
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("\r\nWrite Exit to terminate or write Start to launch server");
Console.ForegroundColor = ConsoleColor.Cyan;

while (alive)
{
switch (Console.ReadLine())
{
case "exit":
alive = false;
if (process != null)
process.Close(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Terminating...", Environment.ExitCode); System.Threading.Thread.Sleep(1000);
break;
case "start":
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Server Launching...");
process = Process.Start("C:/Users/Linus/Desktop/MinecraftServer/CrashProtect.bat");
Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Done! Terminating...", Environment.ExitCode); System.Threading.Thread.Sleep(1000); break;
}
}
}
}
}

Så ska det se ut! MEN! När ajg sedan startar servern, då bara startar den om servern hela tiden, om du tänker dig att det spammas med servrar som startar och får stänga av origrammet, sen watchdoggen! Skit jobbigt!
EDIT: FIXAT! Sänkte bara minnes mängden TROTS att det fanns mycket mer minne ledigt än den ville ha, och sa att det inte fanns...
IAF:
Problemet! Programmet stänger inte av sig... Vad ska jag göra? Redan försökt med Environment.exit men det står bara unbreachable bla bla