我有一个非常具体和冗长的问题.这个问题是关于编程和游戏理论的.我最近在我的回合制战略游戏中添加了可产卵的矿石:http://imgur.com/gallery/0F5D5Ij (对于那些看起来请原谅开发纹理的人).
现在,谈到我一直在思考的谜.在我的游戏中,每次创建新地图时都会生成矿石.每级创建生成0-8个矿石节点.我已经有了这个工作; 除此之外它只产生"绿宝石",这引出了我的问题.
程序员如何才能使节点具有特殊的稀有性?考虑这个简短的模型,它实际上不是游戏数据:
(Pseudo Chances节点将是以下之一)
Bloodstone 1 in 100
Default(Empty Node) 1 in 10
Copper 1 in 15
Emeraldite 1 in 35
Gold 1 in 50
Heronite 1 in 60
Platinum 1 in 60
Shadownite 1 in 75
Silver 1 in 35
Soranite 1 in 1000
Umbrarite 1 in 1000
Cobalt 1 in 75
Iron 1 in 15
Run Code Online (Sandbox Code Playgroud)
我想做到这一点,理论上,生成的节点可以是上面的任何一个,但是,也考虑了几率.我希望这个问题足够清楚.我一直试图绕过这个,甚至试图用randoms写出一些if语句,但是,我一直空手而归.
基本上,我只是希望你们看到我的问题,并希望能够让我对如何以动态的方式解决这个问题提供一些见解.
如果需要澄清,请询问; 如果这是令人费解的话再次对不起.
(我只是将C#添加为标记,因为这是我用于此项目的语言)
我希望用户能够输入如下部分:
1/2
2 1/4
3
Run Code Online (Sandbox Code Playgroud)
并将其转换为相应的十进制数,以便保存在MySQL中,这样我就可以通过它进行排序并对其进行其他比较.
但是我需要能够在向用户显示时将小数转换回一个分数
所以基本上我需要一个将分数字符串转换为十进制的函数:
fraction_to_decimal("2 1/4");// return 2.25
Run Code Online (Sandbox Code Playgroud)
和一个可以将小数转换为派系字符串的函数:
decimal_to_fraction(.5); // return "1/2"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
所以我使用CSS将一些文本从水平旋转到垂直(90度),如下所示:
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
writing-mode: tb-rl;
filter: flipv fliph;
Run Code Online (Sandbox Code Playgroud)
我的问题是,这会将文本方式移到容器div之外.是否有把它放在容器内的技巧?我可以设置一些锚点吗?什么是跨浏览器调整帖子的方式?
何时应该在C++中使用BOOL和bool?为什么?
我认为使用bool更清洁,更便携,因为它是内置类型.但是当你使用遗留代码/ C代码进行交互,或者使用C代码/ Windows API从.NET进行交互操作时,BOOL是不可避免的.
所以我的政策是:在C++中使用bool.与外界交谈时使用BOOL,例如windows DLL中的导出功能.
关于何时使用一个而不是另一个,是否有明确的解释?
我开始使用Android,当我尝试使用图标和文本进行TabHost时.只有文本可见,如果我将文本留空,则可以看到图标.我想在屏幕上看到两个.
有人可以给我建议吗?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Usuario usu = new Usuario();
usu.nombre = "fsdf";
lista.add(usu);
adaptador = new AdaptadorCelda(this,lista);
ListView lstView = (ListView)findViewById(R.id.lista);
lstView.setAdapter(adaptador);
Button btn = (Button)findViewById(R.id.btnSalva);
btn.setOnClickListener(onSave);
Resources res = getResources();
TabHost tabs=(TabHost)findViewById(R.id.tabhost);
tabs.setup();
TabHost.TabSpec spec=tabs.newTabSpec("mitab1");
spec.setContent(R.id.tab1);
spec.setIndicator("",res.getDrawable(android.R.drawable.ic_menu_rotate));
tabs.addTab(spec);
spec=tabs.newTabSpec("mitab2");
spec.setContent(R.id.tab2);
spec.setIndicator("ddd",
res.getDrawable(android.R.drawable.presence_invisible));
tabs.addTab(spec);
tabs.setCurrentTab(0);
spec.setIndicator("",res.getDrawable(android.R.drawable.ic_menu_rotate)) In this case icon appears.
spec.setIndicator("ddd",
res.getDrawable(android.R.drawable.presence_invisible));
Run Code Online (Sandbox Code Playgroud)
这是main.xml
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" > …Run Code Online (Sandbox Code Playgroud) 我正在学习RxJava,并且,作为我的第一个实验,尝试在此代码中的第一个run()方法中重写代码(在Netflix的博客中引用,作为RxJava可以帮助解决的问题)使用RxJava改进其异步性,即它不会f1.get()在继续执行其余代码之前,请等待第一个Future()的结果.
f3取决于f1.我看到如何处理这个,flatMap似乎做了诀窍:
Observable<String> f3Observable = Observable.from(executor.submit(new CallToRemoteServiceA()))
.flatMap(new Func1<String, Observable<String>>() {
@Override
public Observable<String> call(String s) {
return Observable.from(executor.submit(new CallToRemoteServiceC(s)));
}
});
Run Code Online (Sandbox Code Playgroud)
接下来,f4和f5依靠f2.我有这个:
final Observable<Integer> f4And5Observable = Observable.from(executor.submit(new CallToRemoteServiceB()))
.flatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(Integer i) {
Observable<Integer> f4Observable = Observable.from(executor.submit(new CallToRemoteServiceD(i)));
Observable<Integer> f5Observable = Observable.from(executor.submit(new CallToRemoteServiceE(i)));
return Observable.merge(f4Observable, f5Observable);
}
});
Run Code Online (Sandbox Code Playgroud)
这开始变得奇怪(merge他们可能不是我想要的......)但是允许我在最后这样做,而不是我想要的:
f3Observable.subscribe(new Action1<String>() {
@Override …Run Code Online (Sandbox Code Playgroud) 是否有可能BOOST_FOREACH用"纯"C++ 11等效替换本例中的?
#include <map>
#include <functional>
#include <boost/foreach.hpp>
#include <iostream>
int main() {
std::map<int, std::string> map = {std::make_pair(1,"one"), std::make_pair(2,"two")};
int k;
std::string v;
BOOST_FOREACH(std::tie(k, v), map) {
std::cout << "k=" << k << " - " << v << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
关键特性是将键/值对保留在k和的引用中v.
我试过了:
for(std::tie(k,v) : map)
{
std::cout << "k=" << k << " - " << v << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
和
auto i = std::tie(k,v);
for(i : map)
{
std::cout << "k=" …Run Code Online (Sandbox Code Playgroud) 我的PHP页面有一个删除一个MySQL表格数据的链接.我希望它是这样一种方式,当我点击"删除"链接时,应该出现一个确认框,它应该询问"你确定,你想删除吗?",有两个按钮:'是'和'否' .当我单击是时,我想删除MySQL表的数据,当我单击否时,什么都不会发生.
因此,在C++/C#中,您可以创建标记枚举以保存多个值,并且在数据库中存储单个有意义的整数当然是微不足道的.
在Java中你有EnumSets,它似乎是一种在内存中传递枚举的好方法,但是你如何将组合的EnumSet输出到一个整数来存储呢?还有另一种方法来解决这个问题吗?
我一直在试验constexpr.在我的测试编译器(g ++ 4.6)上,无法编译带有关于越界访问的错误.是一个编译器需要在编译时被发现呢?
#include <iostream>
constexpr const char *str = "hi";
constexpr int fail() {
return str[1000]; // Way past the end!
}
template <int N>
struct foo {
static void print() { std::cout << N << std::endl; }
};
int main() {
foo<fail()>::print();
}
Run Code Online (Sandbox Code Playgroud)