我正在建立一个Java的大富翁游戏,我希望它能够通过网络支持游戏(关键在于我和我在A的美国的朋友们可以玩).
网络是我尚未进入的整个编程领域,因此我发现很难确定如何完成它.总的来说,我认为正确的工作方式是拥有一个服务器应用程序,其中包含所有Monopoly游戏代码,然后是app客户端,只需一个带远程方法调用的GUI.
RMI对于这个项目来说是否过于复杂,还是最好的方式?你有什么建议或提示吗?
更新:这个游戏将是100%Java.所以不用担心客户需要安装Java.此外,获得有关使用RMI的一些提示会很棒.
我希望能够从运行iPhone OS 3.x(iPhone/iPad)的设备枚举本地网络上的设备名称.我已经尝试使用NSNetServiceBrowser来查找所有服务,如下所示:
[serviceBrowser searchForServicesOfType:@"_services._dns-sd._udp." inDomain:@"local."];
Run Code Online (Sandbox Code Playgroud)
这会返回结果但是当我尝试解析地址时,我会收到以下错误
NSNetServicesErrorCode = -72004;
NSNetServicesErrorDomain = 10;
Run Code Online (Sandbox Code Playgroud)
我查了一下错误,看来有一个不好的论点?
[kCFNetServiceErrorBadArgument
A required argument was not provided or was not valid.]
Run Code Online (Sandbox Code Playgroud)
如果我做一个服务特定搜索像
[serviceBrowser searchForServicesOfType:@"_ipp._tcp." inDomain:@""];分辨率工作正常.
那么,我是否在NSNetServiceBrowser的正确轨道上,或者是否有其他方法可以让我枚举连接到我网络的设备的名称?
以下内容旨在获取一个可变长度的常量char,并以一种很好的格式打印出来以进行日志记录.我相信读者会就如何改进这方面提出建议,我对此表示欢迎.
令我困惑的是,我希望每次调用ToHexString()时都需要free()返回的静态char.相反,我认为没有任何内存泄漏.即使我使用内联函数,因此也不会将其返回值赋给变量.
我创建了一个简单的测试,在循环中调用此函数,每次使用不同长度的cString和nMaxChars参数.然后我看了VM的状态.我的测试程序和可用内存的内存分配从未改变.
在我看来,每次调用malloc并且没有空闲时它应该增加.
static char *ToHexString(const char *cString,int nMaxChars)
{
static char *cStr;
/*if (80>strlen(cString))
nRawChars=strlen(cString);
if (nMaxChars>nRawChars)
nRawChars=nMaxChars;
*/
if (nMaxChars==0)
nMaxChars=80;
printf("There are %i chars\n",nMaxChars);
char *cStr1;
char *cStr2;
char *cStr3;
int nLen=nMaxChars*6;
cStr=calloc(nLen,sizeof(char));
cStr1=calloc(10,sizeof(char));
cStr2=calloc(nLen,sizeof(char));
cStr3=calloc(nLen,sizeof(char));
cStr1[0]='\0';
cStr2[0]='\0';
cStr3[0]='\0';
int nC1=0;
int nRowCnt=0;
for (nC1=0;nC1<nMaxChars;nC1++)
{
++nRowCnt;
if (cString[nC1]==0x00)
snprintf(cStr1,8,"[00] ");
else
snprintf(cStr1,8,"[%02x] ",(unsigned char)cString[nC1]);
if ( (nRowCnt%8==0) )
{
snprintf(cStr3,nLen,"%s%s\n",cStr2,cStr1);
}
else
snprintf(cStr3,nLen,"%s%s",cStr2,cStr1);
snprintf(cStr2,nLen,"%s",cStr3);
}
snprintf(cStr,nLen,"%s",cStr3);
free(cStr1);
free(cStr2);
free(cStr3);
return(cStr);
}
Run Code Online (Sandbox Code Playgroud)
这是调用例程:
for (i=0;i<100;i++)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个界面:
package com.aex;
import javax.jws.WebParam;
public interface IFonds {
double getKoers();
String getNaam();
void setKoers(@WebParam(name="koers") double koers); }
Run Code Online (Sandbox Code Playgroud)
和班级:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.aex;
import java.io.Serializable;
import javax.jws.*;
/**
*
* @author Julian
*/
@WebService
public class Fonds implements IFonds, Serializable {
String naam;
double koers;
public double getKoers() {
return koers;
}
public String getNaam() {
return naam;
}
public Fonds()
{
} …Run Code Online (Sandbox Code Playgroud) 我需要在此查询中"单独"获取nid.
SELECT count(nid) as total,nid FROM bird_countries b group by nid order by total asc`
Run Code Online (Sandbox Code Playgroud)
基本上我需要这样做
update table set field=1 where id in (the other query);
Run Code Online (Sandbox Code Playgroud)
现在,我得到了nid和nid的总数,但是找不到如何获得nid值来使用它们.
返回第一个查询的示例是:
total nid
1 323
1 2645
1 526
2 123
Run Code Online (Sandbox Code Playgroud)
所以我只想得到值323,2645,526.实际上我不想得到123因为它的计数是2.我需要在表上设置一个字段为1,用于数是1.
更新(第二个问题):我得到了一个很好的答案,但现在我应用它时出错了.我的疑问是
update bird_countries set season="1" where nid in (SELECT nid FROM bird_countries group by nid HAVING count(*) = 1)
Run Code Online (Sandbox Code Playgroud)
和mysql说"你不能在FORM子句中指定平板电脑目标'bird_countries'进行更新." 嗯,有没有简单/快速的方法来做到这一点?我可以复制表bird_countries并将其用于更新(稍后放弃),但可能有一种更清洁的方式.谢谢!
我怎么能根据int值在arraylist下面.但是,如果您编译下面的代码错误:无效的操作异常...详细信息:无法比较数组中的两个元素.
namespace SortArray
{
class Program
{
static void Main(string[] args)
{
ArrayList otomobil = new ArrayList();
otomobil.Add(new Otomobil() { Model = 2000, Marka = "mercedes", Renk = "K?rm?z?" });
otomobil.Add(new Otomobil() { Model = 2002, Marka = "Opel", Renk = "Ye?il" });
otomobil.Add(new Otomobil() { Model = 2009, Marka = "Audi", Renk = "Mavi" });
otomobil.Sort();
for (int i = 0; i < otomobil.Count; i++)
{
Console.WriteLine(otomobil[i].ToString());
}
}
}
public class Otomobil
{
public string Marka { …Run Code Online (Sandbox Code Playgroud) 我有一个示例代码:
import java.awt.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class AWT extends JFrame {
public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(600, 450));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBackground(Color.green.darker());
Button btn_1 = new Button("Button 1");
btn_1.setBackground(Color.green.darker());
btn_1.setSize(40, 100);
Button btn_2 = new Button("Button 2");
btn_2.setBackground(Color.green.darker());
btn_2.setSize(40, 100);
Button btn_3 = new Button("Button 3");
btn_3.setBackground(Color.green.darker());
btn_3.setSize(40, 100);
JPanel players = new JPanel(new GridLayout(1, 3));
players.add(btn_1);
players.add(btn_2);
players.add(btn_3);
players.setBackground(Color.green.darker());
players.setPreferredSize(new Dimension(450, 80));
JPanel game = new JPanel();
game.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
game.setBackground(Color.green);
game.setPreferredSize(new Dimension(600, …Run Code Online (Sandbox Code Playgroud) 我想使用Django的Messages模块,但是,我希望我的消息能够持续到用户单击消息旁边的X,而不是在用户重新加载页面时消息消失.
我遇到两个问题:如何使消息的上下文处理器在访问后不删除消息?一旦用户点击"删除"按钮(调用ajax调用),我以后如何显式删除数据库中的消息?
谢谢!
我怎么能只显示我的div的200px(高度),并跳过前30px(顶部)?
<div style="height:200px; overflow:hidden; padding-top:-30px">
A<br>B<br>C<br>D<br>E<br>F<br>G<br>
H<br>I<br>J<br>K<br>L<br>M<br>N<br>
O<br>P<br>Q<br>R<br>S<br>T<br>U<br>
V<br>W<br>X<br>Y<br>Z
</div>
Run Code Online (Sandbox Code Playgroud) 例如: [dateFormatter setDateFormat:@"yyyy-MM-DD HH:mm:ss"];
我猜有一个列表显示所有那些日期格式说明符,但找不到任何.NSDateFormatter文档似乎没有提到这些.