C# Ha egy betű többször van meg egy szóban, akkor is csak egyszer írja ki, mert csak egyszer lép be az if-be a foron belül, valami ötlet, hogy miért?
if (szoveg.IndexOf(tipp) != -1)
{
for (z = 0; z <= szoveg.Length; z++)
{
if (szoveg.IndexOf(tipp) == z)
{
y = y + z;
Console.SetCursorPosition(y, 8);
Console.Write(tipp);
y = 41;
}
}
}
Mert az IndexOf az első előfordulást adja vissza. Egy második int paraméterrel megmondhatod neki, hogy honnan kezdje a keresést.
Ú hát azt hiszem valami ilyesmi kellene nekem, de segítesz kihámozni nekem belőle, hogy ezt, hogy is kell? Mert nem nagyon sikerül rájönnöm. :S
Valami ilyesmire gondolsz ?
//Console.Write(szoveg); csak a látszat miatt
static void Main(string[] args)
{
string szoveg = "ezt kell kitalálni";
char tipp = 'l';
int y = 1;
Console.SetCursorPosition(y, 8);
Console.Write(szoveg);
if (szoveg.IndexOf(tipp) != -1)
{
y = 1;
for (int z = 0; z < szoveg.Length; z++)
{
if (szoveg[z] == tipp)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.SetCursorPosition(y + z, 8);
Console.Write(tipp);
}
}
}
Console.SetCursorPosition(1, 9);
Console.ReadLine();
}
Akasztófát próbáltam csinálni.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Akasztófa
{
class Program
{
static void Main(string[] args)
{
Console.CursorVisible = false;
String szoveg, tipp, rossz;
int y = 1, hiba = 0, z=0, hossz, f=2, x=0;
Console.SetCursorPosition(1, y);
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write("Írd be a szót, amelyet szertnéd, hogy kitaláljanak: ");
do
{
szoveg = Console.ReadLine();
hossz = szoveg.Length;//Megnézi a szöveg hosszát
if (!szoveg.All(Char.IsLetter))
{
Console.SetCursorPosition(1, f);
Console.Write("Csak betűket tartalmazhat a szó! Írd be újból! ");
f = f + 1; Thread.Sleep(1000);
}
}while (!szoveg.All(Char.IsLetter));
Console.Clear();
y = 41; f = 1; rossz = " ";
Console.SetCursorPosition(30, 1);
Console.Write("Hibás betűk: ");
Console.SetCursorPosition(30, 8);
Console.Write("Jó betűk: ");
do
{
Console.SetCursorPosition(1, f);
Console.Write("Írd be a tipped: ");
tipp = Console.ReadLine();
do
{
while (!tipp.All(Char.IsLetter) || (tipp.Length > 1))
{
f = f + 1;
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(1,f);
Console.Write("Csak EGY betűt adhatsz meg, "); f = f + 1;
Console.SetCursorPosition(1,f); Console.Write(" és CSAK betű lehet! ");
tipp = Console.ReadLine();
f = f + 1;
Console.ForegroundColor = ConsoleColor.Cyan;
}
while (rossz.Contains(tipp))
{
f = f + 1;
Console.ForegroundColor = ConsoleColor.Green;
Console.SetCursorPosition(1,f);
Console.Write("Ezt már beírtad egyszer! {0}", tipp); f = f + 1;
Console.SetCursorPosition(1, f);
Console.Write("Írj be egy másik betűt:");
tipp = Console.ReadLine();
f = f + 1;
Console.ForegroundColor = ConsoleColor.Cyan;
}
rossz = rossz + tipp;
}while(!tipp.All(Char.IsLetter) || (tipp.Length > 1)); //Ha éssel kapcsolom mindkettőnek igaznak kell lennie, különben kilép a ciklusból, ami nem jó..
//Ezért kell a vagy kapcsoló helyette...
f = f + 1; //A sor lentebb menjen
/*----------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
//Ez írja az akasztófát, vagy a jó betűket.
if (szoveg.IndexOf(tipp) != -1)
{
if (x == szoveg.Length)
{
Thread.Sleep(2000);
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(20, 10);
Console.Write("A szót sikeresen kitaláltad, a megoldás: {0}", szoveg); //Pirossal kiírja ezt
Thread.Sleep(5000);
Environment.Exit(0);
}
for (z = 0; z <= szoveg.Length; z++)
{
if (szoveg.IndexOf(tipp) == z)
{
y = y + z;
Console.SetCursorPosition(y, 8);
Console.Write(tipp);
y = 41; //x=x+1; majd ezen belülre kell rakni, ha sikerül többször beléptetni a ciklusba..
}
}
x = x + 1;
}
else hiba = hiba + 1;
if (hiba == 1)
{
Console.SetCursorPosition(44,1);
Console.Write(tipp); //Hamis ág
Console.SetCursorPosition(50, 20);
Console.Write("|");
Console.SetCursorPosition(49, 21);
Console.Write("---");
}
if (hiba == 2)
{
Console.SetCursorPosition(46, 1);
Console.Write(tipp);
Console.SetCursorPosition(50, 16); //Hamis ág
Console.Write("__________");
Console.SetCursorPosition(50, 17);
Console.Write("|");
Console.SetCursorPosition(50, 18);
Console.Write("|");
Console.SetCursorPosition(50, 19);
Console.Write("|");
}
if (hiba == 3)
{
Console.SetCursorPosition(48, 1);
Console.Write(tipp);
Console.SetCursorPosition(60, 18);//Hamis ág
Console.Write("|");
Console.SetCursorPosition(60, 19);
Console.Write("O");
}
if (hiba == 4)
{
Console.SetCursorPosition(50, 1);
Console.Write(tipp);
Console.SetCursorPosition(60, 20);//Hamis ág
Console.Write("I");
}
if (hiba == 5)
{
Console.SetCursorPosition(52, 1);
Console.Write(tipp);
Console.SetCursorPosition(59, 20);//Hamis ág
Console.Write("/");
}
if (hiba == 6)
{
Console.SetCursorPosition(54, 1);
Console.Write(tipp);
Console.SetCursorPosition(61, 20);//Hamis ág
Console.Write(")");
}
if (hiba == 7)
{
Console.SetCursorPosition(56, 1);
Console.Write(tipp);
Console.SetCursorPosition(59, 21);//Hamis ág
Console.Write("/");
}
if (hiba == 8)
{
Console.SetCursorPosition(58, 1);
Console.Write(tipp);
Console.SetCursorPosition(61, 21);//Hamis ág
Console.Write(")");
}
} while (hiba != 8);
Thread.Sleep(3000);//Ha eddíg nem sikerül kitalálni, akkor
Console.Clear(); //Képet töröl
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(23, 10);
Console.Write("A szót nem sikerült kitalálni!"); //Pirossal kiírja ezt
Thread.Sleep(5000);
Environment.Exit(0);//És kilép. Ehelyett majd lehet próbálok egy olyat, hogy az elejére menjen és megkérdezze, hogy akar-e mégegyet játszani.
}//static vége
}
}
Eddíg van meg már csak az kéne, hogy ha többször szerepel a betű a szóban, akkor oda pozícionálva, ahol kell kiírná a betűt akár többször is.
static void Main(string[] args)
{
string szoveg = "ezt kell kitalálni";
char tipp;
int y = 1;
do
{
Console.SetCursorPosition(y, 1);
Console.Write("Kérem a tippet: ");
tipp = Console.ReadKey().KeyChar;
// Ha nem betű azonnal eldobjuk
if (!Char.IsLetter(tipp))
{
Console.SetCursorPosition(y, 1);
Console.Write("Kérem a tippet: "); //Ide több szóköz kell törölni a betűt
}
} while (!Char.IsLetter(tipp));
Console.SetCursorPosition(y, 8);
Console.Write(szoveg);
if (szoveg.IndexOf(tipp) != -1)
{
y = 1;
for (int z = 0; z < szoveg.Length; z++)
{
if (szoveg[z] == tipp)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.SetCursorPosition(y + z, 8);
Console.Write(tipp);
}
}
}
Console.SetCursorPosition(1, 9);
Console.ReadLine();
}
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!