Arhaim | ||
Заказчик заказал одну игру. Клиентскую часть пишу на С#, серверную еще не решил (либо С либо перл, сервер под красной шапкой). Вообщем тут буду выкладывать некоторые отрывки кода, кого заинтересует. Будет много полезных алгоритмов, и обзора возможностей. Сам не писал давно под винду и С шарп не юзал уже года 3. Встречаю много новшеств. Вообщем в теме буду выкладывать некоторые куски программы + предлагаю обсудить аспекты построения МП игры, + возможности с#. Еще я буду писать возникшие вопросы, по нахождению их решения писать ответы. От Вас так же буду ждать помощи в решении моих вопросов. Ну что же начнем с вопросов: Есть Visual Studio 2005. На ней написана прога на с#. У клиента фреймворка нет. Можно ли собрать проэкт так что бы он работал у клиента, а клиент фреймворк не устанавливал? Я слышал что да. Нужно где-то галочку во время компиляции поставить, и он вместе с проэктом в один файлик нужные фичи фреймворка пихает. Вопрос: Правда ли это? и если да, то где установки менять? Говорят что надо создавать отдельный проект для инсталяхи. итак что думаете по этому поводу ВЫ? |
||
petya5 | ||
Про галочку в проекте ничего не знаю. Эта фичу наверняка тебе с с++ подсказали. Там подобным образом можно было слинковать библиотеки MFC или ATL. В результате прога вырастала на пару метров, зато ничего не нужно было с ней тащить. В НЕТе, насоклько я знаю, подобной возможности нет. ТАк что единственный вариант - делать инсталляху. Либо средствами студии, либо шароварным инсталлером каким-нибудь. Студийным предпочтительнее, т.к. наверняка с его помощью легко можно будет "подцепить" Net. Хотя и сторонние инсталлеры поновее наверняка это могут. |
||
Arhaim | ||
Спасибо. Мне уже так несколько человек сказали, так что наверное ты прав. Это сообщение отредактировал Arhaim - 02-04-2007 - 23:21 |
||
Arhaim | ||
В моей игре должно быть взаимодействие с базой данных. так как на сервере стоит мускул, то работаю с ним. Отображается список тикущих игр, к которым можно присоеденится Ниже привожу пример, как можно связатся с мускулом. Сожздаем предварительно на форме датагридвю и вписываем такой код using System.Data.Odbc; ... string HOST = "localhost"; string connectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" + HOST + ";DATABASE=pokerdb;UID=admin;PASSWORD=admin117;OPTION=3"; // string connectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=gamesclub-js.com;DATABASE=dbms1;UID=412495m;PASSWORD=superpas117;OPTION=3"; try { connection = new OdbcConnection(connectionString); connection.Open(); command= new OdbcCommand("select * from holdem_nl_rm", connection); da=new OdbcDataAdapter(command); da.SelectCommand = command; table1 = new DataTable(); table1.Locale = System.Globalization.CultureInfo.InvariantCulture; da.Fill(table1); dataGridView1.DataSource = table1; } catch (Exception ex) { MessageBox.Show(ex.Message); }; Это сообщение отредактировал Arhaim - 02-04-2007 - 23:24 |
||
c0d3r | ||
непонятно почему С#? по-моему это не самая лучшая идея для написания игры... без фреймворка никак. это ВМ! | ||
Arhaim | ||
Фреймворк - ибо на другом под винду не умею писать. Без фреймворка не работает, тут ты прав. Пришлось создавать инсталяху в которую включен драйвер для мускула, проверка есть ли фреймворк - если нет конектица к нету и качает его, ну и собствено сама игра. Как создавать инсталяху привожу ниже пользовался inno setup compiler ибо просто и доступно. Часть скрипта генерится автоматом. В конце приведен пример проверки в реестре на установленость 2 -ого фреймворка, если нет то скачать. Вообщем думаю пригодится многим начинающим. ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! [Setup] AppName=JS Poker AppVerName=JS Poker 0.0.1 DefaultDirName={pf}\JS Poker DefaultGroupName=JS Poker OutputDir=C:\Documents and Settings\dima\Ðàáî÷èé ñòîë\smpoker OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Components] Name: "MDAC"; Description: "Microsoft Data Access Components v2.7"; Types: full compact [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Documents and Settings\dima\Ðàáî÷èé ñòîë\smpoker\instal\Setup2.exe"; DestDir: "{app}"; Components: MDAC; Flags: ignoreversion Source: "C:\Documents and Settings\dima\Ìîè äîêóìåíòû\Visual Studio 2005\Projects\llluk\smpoker_v.0.0.1\bin\Release\smpoker_v.0.0.1.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\Documents and Settings\dima\Ìîè äîêóìåíòû\Visual Studio 2005\Projects\llluk\smpoker_v.0.0.1\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "C:\Documents and Settings\dima\Ìîè äîêóìåíòû\Visual Studio 2005\Projects\llluk\work_cat\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{group}\JS Poker"; Filename: "{app}\smpoker_v.0.0.1.exe" Name: "{commondesktop}\JS Poker"; Filename: "{app}\smpoker_v.0.0.1.exe"; Tasks: desktopicon [Run] Filename: "{app}\Setup2.exe "; StatusMsg: ""; Flags: hidewizard Filename: "{app}\smpoker_v.0.0.1.exe"; Description: "{cm:LaunchProgram,JS Poker}"; Flags: nowait postinstall skipifsilent [Code] function InitializeSetup(): Boolean; var ErrorCode: Integer; NetFrameWorkInstalled: Boolean; Result1: Boolean; Result2: Boolean; begin NetFrameWorkInstalled := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v2.0'); if NetFrameWorkInstalled = true then begin Result := true; end; if NetFrameWorkInstalled = false then begin Result1 := MsgBox('Íà Âàøåì êîìïüþòåðå íå óñòàíîâëåí Microsoft .NET Framework 2.0,' #13 'äëÿ ïðîäîëæåíèÿ óñòàíîâêè íåîáõîäèìà åãî óñòàíîâèòü.' #13#13 'Óñòàíîâèòü Microsoft .NET Framework 2.0?', mbConfirmation, MB_YESNO) = idYes; if Result1 = false then begin Result := false; end else begin Result := false; // my code 2 if not ShellExec('open', ExpandConstant('{src}\dotnetfx.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode) then begin // handle failure if necessary ShellExec('open', 'http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe', '','',SW_SHOWNORMAL,ewNoWait,ErrorCode); Result2 := false; end else begin //Keep going on the install. //ShellExec('open', ExpandConstant('{src}\dotnetfx.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode); Result2:=true; end; end; end; end; |
||
barrakuda | ||
Почитал темку и наконец-то прикрутил mysql к шарпу через ODBC-драйвер! ![]() Спасибо любимому форуму ![]() А никто не пользовался SharpDevelop? Я никак не смог приладить .NET connector mysql как ни пытался :( Ссылку на MySql.Data вроде как добавляет, а не компилирует ... |
||
Arhaim | ||
Шарп девелопер... Ну я его уважаю ибо он бесплатный. Но для коммерческих разработок к сожалению мало пригоден :( Много чего нету. Да и без МСДНа тяжело работать... |
||
barrakuda | ||
Согласен, но есть ведь документация от .net sdk, а msdn он через инет в свободном доступе всегда. ![]() |
||
lankin | ||
Кстати на сайте я находил некоторые вещи, не присутствующие в МСДН-ке, что шла с диском. |