Создать доску слотов на основе результатаC#

Место общения программистов C#
Ответить
Anonymous
 Создать доску слотов на основе результата

Сообщение Anonymous »

Я написал этот код, который генерирует комбинацию из 3-5 разных символов, в результате чего получается случайное число с плавающей запятой. И теперь я пытаюсь превратить это в доску, где оно отображается в виде линий выплат, как в настоящих игровых автоматах, но не могу понять, как это сделать, чтобы это не создавало исключений и не выглядело очень странно.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static test.Program;

namespace test
{
internal class Program
{
// Define a structure to represent a line and its payout
public struct Line
{
public string Symbol;
public int Length;
public float Payout;

public Line(string symbol, int length, float payout)
{
Symbol = symbol;
Length = length;
Payout = payout;
}

public override string ToString()
{
return $"{Symbol} {Length}x {Payout}";
}
}

static void Main(string[] args)
{
while (true)
{
// Define the paytable
List paytable = new List
{
new Line("J", 3, 0.1f),
new Line("J", 4, 0.3f),
new Line("J", 5, 0.6f),
new Line("Q", 3, 0.7f),
new Line("Q", 4, 1.5f),
new Line("Q", 5, 3.0f),
new Line("K", 3, 1.5f),
new Line("K", 4, 5.0f),
new Line("K", 5, 10.0f),
new Line("A", 3, 3.0f),
new Line("A", 4, 10.0f),
new Line("A", 5, 20.0f),
};

paytable.Reverse();

float maxWin = 280;

float target = GetRandomFloat(maxWin);

// List to hold the result
List result = new List();

// Find the combination
bool success = FindCombination(paytable, target, new List(), result);

if (success)
{
Console.WriteLine($"Combination found for {target}:");

foreach (var line in result)
{
Console.WriteLine(line);
}
}
else
{
Console.WriteLine($"No combination found for {target}.");
}

Console.ReadKey(true);
}
}

static float GetRandomFloat(float max)
{
Random random = new Random();
int scale = (int)(max * 10); // Scale to work with integers
int randomValue = random.Next(0, scale + 1);
return randomValue / 10f; // Convert back to float with 1 decimal
}

static bool FindCombination(List paytable, float target, List current, List result)
{
// Base case: if target is close enough to zero
if (Math.Abs(target) < 0.1f)
{
result.AddRange(current);
return true;
}

// Base case: if more than 20 lines are used
if (current.Count >= 20)
{
return false;
}

// Explore each line in the paytable
foreach (var line in paytable)
{
if (line.Payout

Подробнее здесь: https://stackoverflow.com/questions/793 ... rom-result
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»