Я написал этот код, который генерирует комбинацию из 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
Создать доску слотов на основе результата ⇐ C#
Место общения программистов C#
1735216426
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79309423/generate-a-slots-board-from-result[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия