Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15

Таблица лидеров

14.01.2022, 21:58. Показов 3096. Ответов 26

Студворк — интернет-сервис помощи студентам
Добрый вечер. Игра отправляет запрос на получение лидеров из бд и должна получить массив с лучшими игроками + некоторыми их данными.
Проблема в том, что ответом от сервера является "Array", который, по идее, нужно обойти, но функция foreach просто перебирает само слово. Можно ли вернуть сам массив и достать из него данные?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2022, 21:58
Ответы с готовыми решениями:

Проблема с таблицей лидеров от Google Play в игре на Android
Всем привет. У меня небольшая, но неприятная проблема с таблицей лидеров от Гугл Плей в Андроид игре. В настройках таблицы в консоли...

Таблица лидеров
Есть массив с баллами участников int scoreList = new int{ 7, 4, 10, 7, 7 }; Как выдавать в консоль: Да, участники с...

Таблица лидеров
Здраствуйте.Имеется файл we.txt на сервере.И html сама страница,на которой нужно отсортировать ники по их очкам и чтобы они были 1 место по...

26
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
15.01.2022, 11:30
cfunity, Массив чего? ответом от сервера
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
15.01.2022, 22:33  [ТС]
zhunshun, Ответом от сервера это все и делается. Но возвращается не массив с лучшими игроками, а слово Array. Либо же с foreach в с# нужно как-то мудрить.
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
17.01.2022, 09:49
это по большеи части пиеичпи, может вам пустои массив приходит, может не правильно обрабатывается и посылается ответ. Что у вас в php фаиле? Может не удалось подключение
Цитата Сообщение от cfunity Посмотреть сообщение
Либо же с foreach в с# нужно как-то мудрить.
не, чего уже мудрить, если одно слово пришло
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
18.01.2022, 11:37  [ТС]
zhunshun, Я думаю, что с подключением все нормально, ибо могу вывести значения массива с помощью print_r() и других команд. В скрипте сервера: leaderboard();. В скрипте бд:
PHP
1
2
3
4
5
6
7
8
function leaderboard() {
    $users = R::findAll('users');
    usort($users, function ($a, $b) {
        if ($a[lvl] != $b[lvl]) return $b[lvl] - $a[lvl];
        return strcmp($a[user], $b[user]);
    });
    return $users;
}
echo $users возвращает "Array", return $users возвращает пустоту.
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
18.01.2022, 13:35
cfunity, Ну вы понимаете же Вот может коннект и прошел нормально, а запрос неправельныи
фунцция R::findAll('users') присваевает переменнои $users массив, это по умолчанию тк она возвращает массив, а что в нем? Можно посмотреть что возвращает
PHP
1
2
3
foreach ($users as $item) {
    echo $item->user . "\n";
}
перед usort вставь и посмотри что страница выводит

Добавлено через 10 минут
или без ->user

Добавлено через 11 минут
надо помоему при помощи fetch_assoc_array вавести оператором echo все что вернет из бд, а потом с тои страницы получать эти строки и обрабатывать в c#
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
18.01.2022, 15:37  [ТС]
zhunshun, Выводит ассоциативный массив с данными игроков, после usort точно то же, только от большего lvl к меньшему. А с fetch_assoc/array что-то ничего не получается.
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
18.01.2022, 17:33
cfunity, в интернете ссылка на php или нет? Если да то киньте ссылку.
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
18.01.2022, 17:56  [ТС]
zhunshun, Что значит "в интернете ссылка на php"? Игра->сервер->база данных. Сервер работает через openserver
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
18.01.2022, 18:07
cfunity,
я подумал в интернете ссылка. что ссылка повашему только на локальном сервере? Хотелось бы глянуть саму страницу. что та видно за массив

Добавлено через 5 минут
я не устанавливаю локальные сервера, их на просторах интернета достаточно за полчаса можно начать пользоваться
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
18.01.2022, 18:09  [ТС]
zhunshun, Сама страница ничего не выводит. Debug.Log() игры выводит:
{"id":"32", "user":"name", "lvl":"100"}{"id":"13", "user":"world", "lvl":"97"} и т.д.
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
18.01.2022, 18:15
cfunity, прекрасно, надо создать класс с полями инт-id, string user, int lvl и как хотите можно через foreach создать по количеству записеи этих классов и записать в них значения, дальше отсортировать их и вывести первые
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
18.01.2022, 18:40  [ТС]
zhunshun, С echo значения массивов возвращаются как единая строка и я не знаю, что с этим делать. Поэтому пробовал использовать return, который дает пустоту
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
18.01.2022, 19:26
Цитата Сообщение от cfunity Посмотреть сообщение
{"id":"32", "user":"name", "lvl":"100"}{"id":"13", "user":"world", "lvl":"97"}
Создаете экземплр класса Table tabLider = new Table(сюда надо передать это то что сверху), в классе на сцене за этим
C#
1
2
3
foreach(var item in tabLider.liders){
                Debug.Log(string.Format($"{item.ID}, {item.name},{item.lvl}"));
            }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Table{
        public User[] liders;
        public Table(string[][] table){
            liders = new User[table.Length];
            int num = 0;
            foreach(var item in table){
                User user = new User();
                user.ID = int.Parse(item[0]);
                user.name = item[1];
                user.lvl = int.Parse(item[2]);
                liders[num] = user;
                num++;
            }
            liders = Sort(liders).Take(/*тут осторожнеи если цыфра окажетс больше всеи длинны массива будет ошибка*/3).ToArray();// трех первых
            
        }
        public User[] Sort(User[] users){
             return users.OrderByDescending(e => e.lvl).ToArray();  
        }
    }
    public class User{
        public int ID;
        public string name;
        public int lvl;
    }
Добавлено через 1 минуту
хотя постои

Добавлено через 2 минуты
я подумал тут строки а тут отдельно пары

Добавлено через 1 минуту
сеичас подожди надо попробовать че получитс

Добавлено через 26 минут
cfunity, это строка, но он в консоль неправильно вывелась, странно запись которую вы показываете неправильна. Выведите ее как строку
C#
1
string str = ......//то что в Debug.Log выводите и потом строку которая получится выведете в консоль Так же в Debug.Log
Добавлено через 1 минуту
даже на json не похожа

Добавлено через 2 минуты
вот эти до ':' надо убрать

Добавлено через 43 секунды
невнимательно я посмотрел
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
18.01.2022, 19:59  [ТС]
zhunshun, Но возвращается только строка со всеми данными пользователей. Уже тут дает ошибку, ибо не находит id,name,lvl:
C#
1
2
3
foreach(var item in tabLider.liders){
                Debug.Log(string.Format($"{item.ID}, {item.name},{item.lvl}"));
            }
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
18.01.2022, 21:30
cfunity, Не все уже понял что это json. У меня долго вижуалстудио открывается, надо его записывать в фаил json и потом оттуда достать уже разложенныи по классам. Кстати в Unity хорошии парсер Json. Потом напишу.cfunity, они через запятую идут? Даите ка пожалуиста то что получается в чистом виде

Добавлено через 50 минут
cfunity, вывел - фаил json
JavaScript
1
[{"id":"13", "user":"world", "lvl":"97"},{"id":"32", "user":"name", "lvl":"100"}]
c#
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace JsonSeri{
    [Serializable]
    public class User {
        public string id { get; set; }
        public string user { get; set; }
        public string lvl { get; set; }
    }
    public class Program {
        public static void Main(string[] args) {
            string json = File.ReadAllText("1.json");
            var u = JsonSerializer.Deserialize<List<User>>(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
            
            foreach(var item in u)
            Console.WriteLine(string.Format($"{item.id}, {item.user}, {item.lvl}"));
 
            Console.ReadKey();
        }
    }
}
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
20.01.2022, 15:02  [ТС]
zhunshun, Проект изначально был без .NET, из-за чего ругается на using System.Text.Json;. Как быть в этом случае?
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
20.01.2022, 17:03
cfunity, ну а фаил json то такои? В unity свои средства. Если не получится подключить NET5 или NET6если есть такои пункт
, то предется через JsonUtility
или там у меня в List<User> происходит, можно в User[]
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
20.01.2022, 18:38
Причем работает только без {get;set;} в Unity
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.Collections;
using System.IO;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
    public class User {
        public string id;
        public string user;
        public string lvl;
    }
[System.Serializable]
    class Wrapper<T>
    {
        public T[] Items;
    }
public class JsonReader : MonoBehaviour
{
void Start()
{
    var json = File.ReadAllText("1.json");
    json = "{\"Items\":" + json+"}";
    User[] myarray = JsonUtility.FromJson<Wrapper<User>>(json).Items;
    foreach(var it in myarray){
        Debug.Log(string.Format("{0},{1},{2}", it.id, it.user, it.lvl));
    }
}
}
0
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 15
21.01.2022, 19:50  [ТС]
zhunshun, json файл как у вас "1.json", который расположен на сервере. А где должен быть c# скрипт с чтением json'a? У меня такая проблема, что скрипт ищет файл в папке с игрой, где его и нет.

Добавлено через 2 часа 17 минут
А .NET в unity могу выбрать, но я имел ввиду отсутствие .NET в проекте visual studio
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.01.2022, 19:50
Помогаю со студенческими работами здесь

Таблица лидеров в приложении Android
Столкнулся с проблемой, что по документиции гугл вставил все правильно, но таблица лидеров не отображается, хотя в аккаунт google play...

Таблица лидеров с обновлением любого результата
Подключил Google Play Games к проекту. Есть метод, который отвечает за обновление рейтинга в таблице лидера. Выглядит он вот так: ...

Запрос у пользователя отображения данных, таблица лидеров
Добрый день. Создал игру основной смысл которой держится на таблице лидеров, но, для того чтобы данные в ней отображались пользователь...

Сайт в 10 лидеров но ...
Есть один сайт _www.72media.ru который сечас занимает 5 место в яше по ключевому слову &quot;бизнес журнал&quot;, однако в день заходит не...

Доска лидеров
Должно записываться время игры и сортироваться ( перемещаться выше или ниже в позиции 0-9) Не работает запись в файл, остаются 0,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru